
var CM_ActiveMenu;
var cmtimeout;



 
   function InitMenu()
   {
     var bar = document.getElementById('menuBar').childNodes;
     	 
     //	 alert(menuBar.offsetLeft + "," + menuBar.offsetTop);

     for(var i=0;i < bar.length;i++) 
        {
        if(bar[i].id) {
          //var menu=eval(bar[i].menu)
          //alert("bar[" + i + "]=" + bar[i]);
          var menu=document.getElementById((getAttributeByName(bar[i], "menu")));
          //alert("menu=" + menu);
          if(menu) {
	          menu.style.visibility = "hidden";
	          bar[i].onmouseover = new Function("ShowMenu('"+bar[i].id+"')");
	          var Items = menu.childNodes
	          for(var j=0; j<Items.length; j++)
	            {
	              //alert("id=" + Items[j].id);
	              if(Items[j].id){
		              var menuItem = Items[j];
		            	//alert("menu=" + getAttributeByName(menuItem, "menu"));
		                if(getAttributeByName(menuItem, "menu") != null)
		                   { 
		                   // menuItem.innerHTML += " &gt;"
		                   menuItem.innerHTML = '<table border=0 cellpadding=0 cellspacing=0 width=95%><TR><TD>' + menuItem.innerHTML + '</TD><TD align=right><img src="/images/submenu_03.gif"></TD></TR></Table>';
		                    //var tmp = eval(menuItem.id+"_Arrow")
		                    // tmp.style.pixelLeft = menu.getBoundingClientRect().Right //- tmp.offsetWidth - 15
		                    FindSubMenu(getAttributeByName(menuItem, "menu"))
		                    }
		               
		                 if(getAttributeByName(menuItem, "href") != null) 
		                   {
		                   menuItem.onclick = new Function("Do('"+menuItem.id+"')") } 
		                   
		              menuItem.onmouseover = new Function("highlight('"+Items[j].id+"')")
	              }
	            }    
          }
        }
      }  
   }
   
   
   function FindSubMenu(subMenu)
   {
        // var menu=eval(subMenu)
		var menu=document.getElementById(subMenu);
         var Items = menu.childNodes
          for(var j=0; j<Items.length; j++)
            {
              menu.style.visibility = "hidden"
              var menuItem = Items[j]
              if(menuItem.id) {
              	  //alert("menu=" + getAttributeByName(menuItem, "menu"));
	              if(getAttributeByName(menuItem, "menu") != null)
	                 {
	                    menuItem.innerHTML += " &gt;"
	                    //var tmp = eval(menuItem.id+"_Arrow")
	                    //tmp.style.pixelLeft = 35 
	                    //tmp.style.pixelLeft = menuItem.getBoundingClientRect().right - tmp.offsetWidth - 15
	                    FindSubMenu(getAttributeByName(menuItem, "menu"))
	                 }

	                 if(getAttributeByName(menuItem, "href") != null) 
	                   {
	                   menuItem.onclick = new Function("Do('"+menuItem.id+"')") } 
	                  
	              menuItem.onmouseover = new Function("highlight('"+Items[j].id+"')")
              }
            }  
   } 
   
   
   function ShowMenu(objid)
   {
	obj = document.getElementById(objid);

     HideMenu('menuBar');
     var menu = document.getElementById(getAttributeByName(obj,"menu"));
     var bar = document.getElementById(obj.id)
     bar.className="barOver"
     menu.style.visibility = "visible"
     menu.style.position = "absolute";
     //menu.style.pixelTop =  obj.getBoundingClientRect().top + obj.offsetHeight + Bdy.scrollTop
     //menu.style.pixelLeft = obj.getBoundingClientRect().left + Bdy.scrollLeft
     //alert("top=" + obj.parentNode.clientHeight);
     //menu.style.top =  obj.parentNode.offsetTop + obj.clientHeight;
     //menu.style.left = obj.offsetLeft + obj.parentNode.offsetLeft;
     
     menu.style.top = (DL_GetElementTop(obj) + obj.clientHeight) + 'px';
     menu.style.left = DL_GetElementLeft(obj) + 'px';     
     
     CM_ActiveMenu = obj;
     //alert("CM_ActiveMenu=" + CM_ActiveMenu.id);
     clearTimeout( cmtimeout);
     //alert("Clear Timeout");
     obj.onmouseout = CM_SetTimeout;
   }
   
   
   
   function highlight(objid)
   {
   	 var obj = document.getElementById(objid);
   	 
     var PElement = obj.parentNode
     if(PElement.hasChildNodes() == true)
     {  var Elements = PElement.childNodes
       for(var i=0;i<Elements.length;i++)
       {
          TE = Elements[i];
          if(TE.id)
          	TE.className = "menuItem"
       }
      } 
     
     window.defaultStatus = obj.title
     ShowSubMenu(obj)
     	 
     obj.className="ItemMouseOver";
     	 
     clearTimeout( cmtimeout);
     obj.onmouseout = CM_SetTimeout;
   }
   
   
   
   function Do(objid)
   {
   	var obj = document.getElementById(objid);
    var href = getAttributeByName(obj, "href");
    //window.navigate(href);
    window.location = href;
     
   }
   
   
   
   function HideMenu(objid)
   {
   	   var obj = document.getElementById(objid);
   	   	//alert("HideMenu obj=" + obj.id);
          if(obj.hasChildNodes()==true)
              {  
              	 // alert(obj.childNodes);
                 //var child = obj.children     
                 var child = obj.childNodes;
                 
                 for(var j =0;j<child.length;j++)
                  {
                     if (child[j].className=="barOver")
                     {
                     	 var bar = document.getElementById(child[j].id);
                      	 bar.className="Bar";
                     } else if (child[j].className=="ItemMouseOver") {
                     	 child[j].className = "menuItem";
                     }
                      
                     if(getAttributeByName(child[j], "menu") != null)
                       {
                          var childMenu = document.getElementById(getAttributeByName(child[j], "menu"))
                          if(childMenu.hasChildNodes()==true) 
                               HideMenu(childMenu.id)
                          
                           childMenu.style.visibility = "hidden";
                          // alert(childMenu.id);
                           
                         }
                  }
              
              }
   }
   
   
   
  function ShowSubMenu(obj)
  {
     PMenu = document.getElementById(obj.parentNode.id)
      HideMenu(PMenu.id)
         //alert(getAttributeByName(obj, "menu"));
     if(getAttributeByName(obj, "menu") != null)
     {
     var menu = document.getElementById(getAttributeByName(obj,"menu"))
     menu.style.visibility = "visible"
     menu.style.position = "absolute";
     //menu.style.pixelTop =  obj.getBoundingClientRect().top + Bdy.scrollTop
     //menu.style.pixelLeft = obj.getBoundingClientRect().right + Bdy.scrollLeft
     //menu.style.top =  obj.parentNode.offsetTop + obj.offsetTop;
     //menu.style.left = obj.parentNode.offsetLeft + obj.clientWidth;      
     
	
     menu.style.top = (DL_GetElementTop(obj) ) + 'px';
     menu.style.left = (DL_GetElementLeft(obj) + obj.clientWidth - 5) + 'px';       
     menu.style.zIndex = 100;
     //alert(obj.style.paddingLeftValue);
	//alert(document.styleSheets[0]['cssRules'][6].style[7].);     
    
     //if(menu.getBoundingClientRect().right > window.screen.availWidth )
     //  menu.style.pixelLeft = obj.getBoundingClientRect().left - menu.offsetWidth
    }
  } 




function CM_SetTimeout(obj) {
	//alert("Set Timeout");
	cmtimeout = setTimeout("HideMenu('menuBar')", 200);
}


  function getAttributeByName(node, attName) {
  	  if(node.id) {
	  	//alert(node.id + ":" + attName);
		if(document.all) {
			for(var i=0; i<node.attributes.length; i++) {
				if(node.attributes.item(i).nodeName == attName) return node.attributes.item(i).nodeValue;
			}
			return null;
		} else {
			if(node.attributes[attName]) return node.attributes[attName].nodeValue;
			else return null;
		}
	  }
  }
  

function DL_GetElementLeft(eElement)
{
   if (!eElement && this)                    // if argument is invalid
   {                                         // (not specified, is null or is 0)
      eElement = this;                       // and function is a method
   }                                         // identify the element as the method owner

   var DL_bIE = document.all ? true : false; // initialize var to identify IE

   var nLeftPos = eElement.offsetLeft;       // initialize var to store calculations
   var eParElement = eElement.offsetParent;  // identify first offset parent element
   
   
	//alert(eElement.tagName + "," + eElement.id + "," +  eElement.offsetLeft);

   while (eParElement != null)
   {                                         // move up through element hierarchy
   	  //alert(eParElement.tagName + "," + eParElement.id + "," +  eParElement.offsetLeft);
      if(DL_bIE)                             // if browser is IE, then...
      {
      	 
         if(eParElement.tagName.toUpperCase() == "TD")     // if parent a table cell, then...
         {
         	
            nLeftPos += eParElement.clientLeft; // append cell border width to calcs
         }
      }
      else                                   // if browser is Gecko, then...
      {
         if(eParElement.tagName.toUpperCase == "TABLE")  // if parent is a table, then...
         {                                   // get its border as a number
            var nParBorder = parseInt(eParElement.border);
            if(isNaN(nParBorder))            // if no valid border attribute, then...
            {                                // check the table's frame attribute
               var nParFrame = eParElement.getAttribute('frame');
               if(nParFrame != null)         // if frame has ANY value, then...
               {
                  nLeftPos += 1;             // append one pixel to counter
               }
            }
            else if(nParBorder > 0)          // if a border width is specified, then...
            {
               nLeftPos += nParBorder;       // append the border width to counter
            }
         }
      }

      nLeftPos += eParElement.offsetLeft;    // append left offset of parent
      eParElement = eParElement.offsetParent; // and move up the element hierarchy
   }                                         // until no more offset parents exist
   //alert("nLeft=" + nLeftPos);
   return nLeftPos;                          // return the number calculated
}

function DL_GetElementTop(eElement)
{
   if (!eElement && this)                    // if argument is invalid
   {                                         // (not specified, is null or is 0)
      eElement = this;                       // and function is a method
   }                                         // identify the element as the method owner

   var DL_bIE = document.all ? true : false; // initialize var to identify IE

   var nTopPos = eElement.offsetTop;         // initialize var to store calculations
   var eParElement = eElement.offsetParent;  // identify first offset parent element

   while (eParElement != null)
   {                                         // move up through element hierarchy
      if(DL_bIE)                             // if browser is IE, then...
      {
         if(eParElement.tagName == "TD")     // if parent a table cell, then...
         {
            nTopPos += eParElement.clientTop; // append cell border width to calcs
         }
      }
      else                                   // if browser is Gecko, then...
      {
         if(eParElement.tagName == "TABLE")  // if parent is a table, then...
         {                                   // get its border as a number
            var nParBorder = parseInt(eParElement.border);
            if(isNaN(nParBorder))            // if no valid border attribute, then...
            {                                // check the table's frame attribute
               var nParFrame = eParElement.getAttribute('frame');
               if(nParFrame != null)         // if frame has ANY value, then...
               {
                  nTopPos += 1;              // append one pixel to counter
               }
            }
            else if(nParBorder > 0)          // if a border width is specified, then...
            {
               nTopPos += nParBorder;        // append the border width to counter
            }
         }
      }

	//alert(eParElement.id + "," + eParElement.offsetTop);
      nTopPos += eParElement.offsetTop;      // append top offset of parent
      eParElement = eParElement.offsetParent; // and move up the element hierarchy
   }                                         // until no more offset parents exist
   return nTopPos;                           // return the number calculated
}


