/*BEGIN*/
/*====================================================
  Create By jjkk at 2001-10-25
  
  Example:
  put this in HTML header
    <script language="JavaScript" src="/javascript/_component.js"></script>
    <script language="JavaScript" src="/javascript/_menu.js"></script>
    <link rel="stylesheet" href="/css/_menu.css" type="text/css">

  put this line into where you want to show the menu
    OnMouseOver="expendMenu(menu, info, this, window.event)"
  
  Init the menu by following code
    menu = new Array
      (
  	  new Array ("menu1","event1")
	    );
  	function event1(obj, info)
	    {
	    what you want to do.
	    }
====================================================*/


var interval = 140; //how the table shall be sliced
var menudivIntervalId=null;
var menuDepth=2;
var menuNowLevel=new Array();
for(var i=0;i<menuDepth;i++)
  {
  menuNowLevel[i]=0;
  var strMenudivid="menudiv"+String(i);
  document.write('<div id="'+strMenudivid+'" style="position:absolute;visibility:visible;z-index:2" onMouseOver="enterSubMenu('+i+')" onMouseOut="javascript:leaveSubMenu('+i+', getelement(\''+strMenudivid+'\'), event)"></div>');
  }
var isMenuRelated=0;
var menuRelatedX=0;
var menuRelatedY=0;
var isFixHeight=0;
var menuFixHeight=0;
var menuMainStyle;
var menuMainSelectStyle;
var menuStyle="m_menu";
var menuItemStyle="m_item";
var menuItemSelectStyle="m_selectitem";
var menuItemSperateStyle="m_sperateitem";
var toolBatStyle;
var toolButtonStyle;
var toolButtonMouseOverStyle;
var toolButtonMouseDownStyle;
var nowMainMenu;

function absTop(obj)
  {
  iTop=0;
  while(obj!=null)
    {
    iTop+=obj.offsetTop;
    obj=obj.offsetParent;
    }
  return iTop;
  }
function absLeft(obj)
  {
  iLeft=0;
  while(obj!=null)
    {
    iLeft+=obj.offsetLeft;
    obj=obj.offsetParent;
    }
  return iLeft;
  }

function initMenu(menu)
  {
	var arPara =  menu[0];
	var paraNumber = arPara.length;
	
  interval = 180; //how the table shall be sliced
  isMenuRelated=0;
  menuRelatedX=0;
  menuRelatedY=0;
  isFixHeight=0;
  menuFixHeight=0;
  menuMainStyle;
  menuStyle;
  menuItemStyle;
  menuItemSelectStyle;
  menuItemSperateStyle;
  
	for (i=0;i<paraNumber;i++)
	  {
	  if(arPara[i]=="related")
	    {
	    isMenuRelated=1;
      menuRelatedX=arPara[i+1];
      menuRelatedY=arPara[i+2];
	    i+=2;
	    continue;
	    }
    else if(arPara[i]=="fixheight")
      {
	    isFixHeight=1;
      menuFixHeight=arPara[i+1];
	    i+=1;
	    continue;
      }
    else if(arPara[i]=="menustyle")
      {
      menuStyle=arPara[i+1];
	    i+=1;
	    continue;
      }
    else if(arPara[i]=="itemstyle")
      {
      menuItemStyle=arPara[i+1];
	    i+=1;
	    continue;
      }
    else if(arPara[i]=="itemselectstyle")
      {
      menuItemSelectStyle=arPara[i+1];
	    i+=1;
	    continue;
      }
    else if(arPara[i]=="itemsperatestyle")
      {
      menuItemSperateStyle=arPara[i+1];
	    i+=1;
	    continue;
      }
    else if(arPara[i]=="interval")
      {
      interval=arPara[i+1];
	    i+=1;
	    continue;
      }
    else if(arPara[i]=="menumainstyle")
      {
      menuMainStyle=arPara[i+1];
	    i+=1;
	    continue;
	    }
    else if(arPara[i]=="menumainselectstyle")
      {
      menuMainSelectStyle=arPara[i+1];
	    i+=1;
	    continue;
	    }
    else if(arPara[i]=="toolbarstyle")
      {
      toolBarStyle=arPara[i+1];
	    i+=1;
	    continue;
	    }
    else if(arPara[i]=="toolbuttonstyle")
      {
      toolButtonStyle=arPara[i+1];
	    i+=1;
	    continue;
	    }
    else if(arPara[i]=="toolbuttonmouseover")
      {
      toolButtonMouseOverStyle=arPara[i+1];
	    i+=1;
	    continue;
	    }
    else if(arPara[i]=="toolbuttonmousedown")
      {
      toolButtonMouseDownStyle=arPara[i+1];
	    i+=1;
	    continue;
	    }
	  }
  }
function showHomeMenu(menu, info, objectItem, event)
  {
	var itemNumber = menu.length;
	var itemMenu = menu;
	var content = "";
  initMenu(menu);

  var head = "<table cellspacing=0 cellpadding=0 class="+menuMainStyle+" width=100% style=''border-width:1;border-style:outset;'><tr><td><table cellspacing=0 cellpadding class="+menuMainStyle+"><tr>";
  var foot = "</tr></table></td></tr></table>";
	for (var i=1;i<itemNumber;i++)
	  {
	  if(itemMenu[i][0]!='-')
	    {
	    if(itemMenu[i][3]!=null)
	      {
        content = content + "<td width=10></td><td class="+menuMainStyle+" id="+itemMenu[i][0]+" onMouseOver='expendMenu("+itemMenu[i][3]+", this, getelement(\""+itemMenu[i][0]+"\"), getevent())' onMouseOut='leaveMenu(this);'>"+itemMenu[i][1]+"</td>";
        }
      else
        content = content + "<td width=10></td><td class="+menuMainStyle+" id="+itemMenu[i][0]+" onMouseOver='expendNoSubMenu(this);' onclick='goLocation(\""+itemMenu[i][2]+"\")' onMouseOut='restoreMain(this);'>"+itemMenu[i][1]+"</td>";
	    }
	  else
	    content = content + "<td width=5></td><td  class='"+ menuItemSperateStyle +"' width=1><img width=1 height=1 src=/images/spacer.gif></td><td width=5></td>";
	  }
  document.write(head+content+foot);
  }
function expendMenu(menu, info, objectItem, event) //the first layer under the main menu
  {
  highlightMain(info);
  if(nowMainMenu!=null) restoreMain(nowMainMenu);
  nowMainMenu=info;
  expendMenuSub(menu, "", objectItem, event, 0);
	menuNowLevel[0]=1;
	if(menudivIntervalId==null)
    menudivIntervalId=setInterval('closeMenu()', 10);
  }
function expendNoSubMenu(info) //the first layer under the main menu
  {
  highlightMain(info);
  if(nowMainMenu!=null) restoreMain(nowMainMenu);
  nowMainMenu=info;
  }
function expendMenuSub(menu, info, objectItem, event, depth) //the first layer under the main menu
  {
	var itemNumber = menu.length;
	var itemMenu = menu;
	var content = "";
	//var X=window.event.x;
	//var Y=window.event.y;
	var strMenudivid="menudiv"+String(depth);
	var objMenu;
	
  initMenu(menu);
  enterSubMenu(depth);

	var head = "<div id='ItemMenu"+depth+"' class='"+ menuStyle +"' width=100%><table width=100% cellpadding=0 cellspacing=0 border=0>";
	var foot = "</table></div>";
	for (var i=1;i<itemNumber;i++)
	  {
	  if(itemMenu[i][0]!='-')
	    {
	    if(itemMenu[i][2]!=null)
	      content = content + "<tr><td class='"+ menuItemStyle +"' OnMouseOut='restore(this);' OnMouseOver='highlight(this);expendMenuSub("+itemMenu[i][2]+", \"\", this, getevent(),"+String(depth+1)+");' onclick='goLocation(\""+itemMenu[i][1]+"\")'>&nbsp;&nbsp;" + itemMenu[i][0] +"&nbsp;&nbsp;</td></tr>";
	    else
	      content = content + "<tr><td class='"+ menuItemStyle +"' OnMouseOut='restore(this);' OnMouseOver='highlight(this);' onclick='goLocation(\""+itemMenu[i][1]+"\")'>&nbsp;&nbsp;" + itemMenu[i][0] +"&nbsp;&nbsp;</td></tr>";
	    }
	  else
	    content = content + "<tr><td class='"+ menuItemSperateStyle +"' height=1><img src='/images/spacer.gif' border=0 height=1 width=1></td></tr>";
	  }

  objMenu=getelement(strMenudivid);
    
  objMenu.style.width = interval;	
  objMenu.innerHTML = head + content + foot;	
  objMenu.text = head + content + foot;	
	objMenu.style.visibility = "visible";

  if(isMenuRelated==1)
    {
    var shiftLeft=0;
    var shiftTop=0;
    if(depth!=0)
      {
	    var strFatherMenudivid="menudiv"+String(depth-1);
      }
	  objMenu.style.left = absLeft(objectItem) + parseInt(menuRelatedX);
	  objMenu.style.top = absTop(objectItem) + parseInt(menuRelatedY);
    }
  else
    {
	  objMenu.style.left = parseInt(X);
	  objMenu.style.top = parseInt(Y);	
	  }

  if(isFixHeight==1)
    {
    getelement("ItemMenu"+depth).style.height = menuFixHeight;	
    getelement("ItemMenu"+depth).style.overflow='auto';
    //objMenu.style.height = menuFixHeight;	
    //objMenu.style.overflow='auto';
    }
  }
function closeMenu()
  {
	var objMenu;
  for(var i=menuDepth-1;i>=0;i--)
    {
	  var strMenudivid="menudiv"+String(i);
    objMenu=getelement(strMenudivid);
    if(menuNowLevel[i]==0)
      {
      objMenu.style.visibility = "hidden";
      if(i==0)
        {
        restoreMain(nowMainMenu);
        if(menudivIntervalId!=null)
          clearInterval(menudivIntervalId);
        menudivIntervalId=null;
        }
      }
    else
      break;
    }
  }
function closeAllMenu()
  {
	var objMenu;
  for(var i=0;i<menuDepth;i++)
    {
	  var strMenudivid="menudiv"+String(i);
    objMenu=getelement(strMenudivid);
    objMenu.style.visibility = "hidden";
    }
  if(menudivIntervalId!=null)
    clearInterval(menudivIntervalId);
  menudivIntervalId=null;
  }
function highlight(obj)
  {
  if(obj==null) return;
 	obj.className = menuItemSelectStyle;
  }
function restore(obj)
  {
  if(obj==null) return;
 	obj.className = menuItemStyle;
  }
function highlightMain(obj)
  {
  if(obj==null) return;
	obj.className = menuMainSelectStyle;
  }
function restoreMain(obj)
  {
  if(obj==null) return;
  obj.className = menuMainStyle;
  }
function enterMenu()
  {
  enterSubMenu(0);
  }
function leaveMenu(obj)
  {
  if(obj==null) return;
	if(menuNowLevel[0]!=1)
	  restoreMain(obj);
  leaveSubMenu(0);
  }
function enterSubMenu(depth)
  {
  menuNowLevel[depth]=1;
  }
function leaveSubMenu(depth, obj, evnt)
  {
  biasX=eventOffsetX(obj, evnt); 
  biasY=eventOffsetY(obj, evnt); 
  if(obj==null) return;
  if(obj.style==null) return;
  if(getelement("ItemMenu"+depth).style.height=="")
    {
    menuNowLevel[depth]=0;
    return;
    }
  if( biasX < 0 ||
      biasX > parseInt(obj.style.width) ||
      biasY < 0 ||
      biasY > parseInt(getelement("ItemMenu"+depth).style.height)
      )
    menuNowLevel[depth]=0;
  }
function goLocation(URL)
  {
  if(URL.substr(0,1)=='@')
    {
    URL=URL.substr(1);
    window.open(URL, '_blank');
    }
  else
    {
    if(URL!='')
      window.location=URL;
    }
  }
function mergeMenu(menu1, menu2)
  {
  var newMenu=new Array();
  iNewMenuCount=0;  
  newMenu[iNewMenuCount++]=menu1.shift();
  menu2.shift();
  iMenu1Count=menu1.length;
  iMenu2Count=menu2.length;
  for(var i=0;i<iMenu2Count;i++)
    newMenu[iNewMenuCount++]=menu2.shift();
  for(var i=0;i<iMenu1Count;i++)
    newMenu[iNewMenuCount++]=menu1.shift();
  return newMenu;
  }
function insertMenu(menu1, menu2)
  {
  var newMenu=new Array();
  iNewMenuCount=0;  
  newMenu[iNewMenuCount++]=menu1.shift();
  iMenu1Count=menu1.length;
  iMenu2Count=menu2.length;
  for(var i=0;i<iMenu2Count;i++)
    newMenu[iNewMenuCount++]=menu2.shift();
  for(var i=0;i<iMenu1Count;i++)
    newMenu[iNewMenuCount++]=menu1.shift();
  return newMenu;
  }
function showToolBar(menu, info, objectItem, event)
  {
	var itemNumber = menu.length;
	var itemMenu = menu;
	var content = "";
  initMenu(menu);

  var head = "<table cellspacing=0 cellpadding=0 class="+toolBarStyle+" width=100% style='border-width:1;border-style:outset;'><tr><td><table cellspacing=0 cellpadding=0 class="+toolBarStyle+"><tr>";
  var foot = "</tr></table></td></tr></table>";
	for (var i=1;i<itemNumber;i++)
	  {
	  if(itemMenu[i][0]!='-')
	    {
  	  if(itemMenu[i][2]=="" || itemMenu[i][2]==null)
        content = 
          content + "<td class=\""+toolButtonStyle+"\" id="+itemMenu[i][0]+
          " align=center"+
          "' ><img style=\"position:relative;width:24;height:23;filter:mask(color=buttonshadow);\" border=0 align=absmiddle src='"+
          itemMenu[i][3]+"'>"+itemMenu[i][1]+
          "</td><td class="+toolButtonStyle+" width=5></td>";
	    else
        content = 
          content + "<td class=\""+toolButtonStyle+"\" id="+itemMenu[i][0]+
          " align=center onclick='goLocation(\""+
          itemMenu[i][2]+"\")' onmouseover='buttonMouseAction(this,\""+toolButtonMouseOverStyle+"\")"+
          "' onmouseout='buttonMouseAction(this,\""+toolButtonStyle+"\")"+
          "' onmousedown='buttonMouseAction(this,\""+toolButtonMouseDownStyle+"\")"+
          "' ><img  border=0 align=absmiddle src='"+
          itemMenu[i][3]+"'>"+itemMenu[i][1]+
          "</td><td class="+toolButtonStyle+" width=5></td>";
	    }
	  else
	    content = content + "<td width=1 style=\"border: 1 inset;\"><img width=1 height=1 src=\"/images/spacer.gif\"></td>";
	  }
  document.write(head+content+foot);
  }
function buttonMouseAction(obj, className)
  {
  obj.className=className;
  closeAllMenu();
  }
function setParameter(menuname, paramarray)
  {
	var paramNumber = paramarray.length;
	var itemMenu = eval(menuname);
	var itemNumber = itemMenu.length;


	for (var i=1;i<itemNumber;i++)
	  {
	  if(itemMenu[i][0]!='-')
	    {
	    if(itemMenu[i][3]!=null)
	      {
        setParameterSub(itemMenu[i][3], paramarray);
        }
      else
        {
        for(var j=0;j<paramNumber;j++)
          {
          itemMenu[i][2]=itemMenu[i][2].replace("/@"+paramarray[j][0]+"@/", paramarray[j][1]);
          }
        }
	    }
	  }
  }
function setParameterSub(menuname, paramarray)
  {
	var paramNumber = paramarray.length;
	var itemMenu = eval(menuname);
	var itemNumber = itemMenu.length;
	for (var i=1;i<itemNumber;i++)
	  {
	  if(itemMenu[i][0]!='-')
	    {
	    if(itemMenu[i][2]!=null)
        itemMenu[i][2]=setParameter(itemMenu[i][3], paramarray);
      else
        {
        for(var j=0;j<paramNumber;j++)
          {
          re="/@"+paramarray[j][0]+"@/i";
          itemMenu[i][1]=itemMenu[i][1].replace(eval(re), paramarray[j][1]);
          }
        }
	    }
	  }
  }
function expendSelectList(menu, info, objectItem, event, depth)
  {
  expendMenuSub(menu, info, objectItem, event, 0);
	menuNowLevel[0]=1;
	if(menudivIntervalId==null)
    menudivIntervalId=setInterval('closeMenu()', 10);
  }
