var isDOM = document.getElementById ? true : false; 
var isIE4 = (document.all && !isDOM) ? true : false;
var isNS4 = document.layers ? true : false;

function Menu(isVert, popInd, x, y, width, overCol, backCol, borderClass, textClass)
{
  this.isVert = isVert;
  this.popInd = popInd;
  this.x = x;
  this.y = y;
  this.width = width;
  this.overCol = overCol;
  this.backCol = backCol;
  this.borderClass = borderClass;
  this.textClass = textClass;
  this.parentMenu = null;
  this.parentItem = null;
  this.ref = null;
}

function Item(text, href, frame, length, spacing, target, tabindex)
{
  this.text = text;
  this.href = href;
  this.frame = frame;
  this.length = length;
  this.spacing = spacing;
  this.target = target;
  this.tabindex = tabindex;
  this.ref = null;
}

function getRef(id)
{
  if (isDOM) return document.getElementById(id);
  if (isIE4) return document.all[id];
  if (isNS4) return document.layers[id];
}

function getSty(id)
{
    return (isNS4 ? getRef(id) : getRef(id).style); 
}

var popTimer = 0;
var litNow = new Array();

function popOver(menuNum, itemNum , e)
{
  clearTimeout(popTimer);
  hideAllBut(menuNum);
  litNow = getTree(menuNum, itemNum);
  changeCol(litNow, true);
  targetNum = menu[menuNum][itemNum].target;
  if (targetNum > 0)
  {
//    thisX = parseInt(menu[menuNum][0].ref.left) + parseInt(menu[menuNum][itemNum].ref.left);
//   thisY = parseInt(menu[menuNum][0].ref.top) + parseInt(menu[menuNum][itemNum].ref.top);
   
    thisX =getoffset(e,"l") ;
	thisY =getoffset(e,"t") ;
    
    with (menu[targetNum][0].ref) 
    {
      //left = parseInt(thisX + menu[targetNum][0].x);
      //top = parseInt(thisY + menu[targetNum][0].y);
	   //left = parseInt(thisX);
       //top = parseInt(thisY );
	   left = (thisX);
       top = (thisY );
      visibility = 'visible';
    }
    
  }
  
}

function popOut(menuNum, itemNum) 
{
  if ((menuNum == 0) && !menu[menuNum][itemNum].target) hideAllBut(0);
  else popTimer = setTimeout('hideAllBut(0)', 500);
}

function getTree(menuNum, itemNum) 
{
  itemArray = new Array(menu.length);
  while (1) 
  {
    itemArray[menuNum] = itemNum;
    if (menuNum == 0) return itemArray;
    
    itemNum = menu[menuNum][0].parentItem;
    menuNum = menu[menuNum][0].parentMenu;
  }
  return "";
}

function changeCol(changeArray, isOver) 
{
  for (menuCount = 0; menuCount < changeArray.length; menuCount++) 
  {
    if (changeArray[menuCount]) 
    {
      newCol = isOver ? menu[menuCount][0].overCol : menu[menuCount][0].backCol;
      
      with (menu[menuCount][changeArray[menuCount]].ref) 
      {
        if (isNS4) bgColor = newCol;
        else backgroundColor = newCol;
      }
      
    }
  }
}

function hideAllBut(menuNum) 
{
  var keepMenus = getTree(menuNum, 1);
  for (count = 0; count < menu.length; count++)
  if (!keepMenus[count]) menu[count][0].ref.visibility = 'hidden';
  changeCol(litNow, false);
}

function writeMenus() 
{
  for (currMenu = 0; currMenu < menu.length; currMenu++)
  with (menu[currMenu][0]) 
  {
    var str = '', itemX = 0, itemY = 0;
    
    for (currItem = 1; currItem < menu[currMenu].length; currItem++)
    with (menu[currMenu][currItem])
    {
      var itemID = 'menu' + currMenu + 'item' + currItem;
      var w = (isVert ? width : length);
      var h = (isVert ? length : width);
      
      if (isDOM || isIE4) 
      {
        str += '\n<div  id="' + itemID + '" style="position: absolute; left: ' + itemX + 'px; top: ' + itemY + 'px; width: ' + w + 'px; height: ' + h + 'px; visibility: inherit; ';
        if (backCol) str += 'background: ' + backCol + '; ';
        str += '" ';
      }
      
      /*if (isNS4) 
      {
        str += '<layer id="' + itemID + '" left="' + itemX + '" top="' + itemY + '" width="' +  w + '" height="' + h + '" visibility="inherit" ';
        if (backCol) str += 'bgcolor="' + backCol + '" ';
      }*/
      
      if (borderClass) str += 'class="' + borderClass + '" ';
      
      str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';
      alttext=text;
	  if (alttext=="局長信箱"){
		  alttext="局長信箱(信件限制2.5MB)";
	  }     
	  if (alttext=="早期療育資訊連合照護網討論區"){
		  alttext="早期療育資訊連合照護網討論區(另開新視窗)";
	  }  
	  if (alttext=="青少年性教育諮詢小站醫療討論區"){
		  alttext="青少年性教育諮詢小站醫療討論區(另開新視窗)";
	  }   
      //str += '<table style="width:' + (w - 8) + '" border="1" cellspacing="0" cellpadding="3"><tr><td align="left" style="height: ' + (h - 7) + '">' + '<a class="' + textClass + '" href="' + href + '"' + (frame ? ' target="' + frame + '">' : '>') + text + '</a></td>';
      str += '<table style="width:100%" border="1" cellspacing="0" cellpadding="3" bordercolor="#EEEEEE" summary=""><tr><td align="left" style="height: ' + (h - 7) + '">' + '<a class="' + textClass + '" href="' + href + '"' + (frame ? ' target="' + frame + '" title="' + alttext + '" tabindex="'+ tabindex +'" style="color: #FFFFFF; font-size :10pt">' : '>') + text + '</a></td>';
      if (target > 0) 
      {
        menu[target][0].parentMenu = currMenu;
        menu[target][0].parentItem = currItem;
        if (popInd) str += '<td class="' + textClass + '" align="right"  nowrap="nowrap">' + popInd + '</td>';
      }
      
      str += '</tr></table>' + '</div>';
      if (isVert) itemY += length + spacing;
      else itemX += length + spacing;
    }
    
    if (isDOM) 
    {
      var newDiv = document.createElement('div');
      document.getElementsByTagName('body').item(0).appendChild(newDiv);
      newDiv.innerHTML = str;
      ref = newDiv.style;
      ref.position = 'absolute';
      ref.visibility = 'hidden';
    }
    
    if (isIE4) 
    {
      document.body.insertAdjacentHTML('beforeEnd', '<div id="menu' + currMenu + 'div" ' + 'style="position: absolute; visibility: hidden;">' + str + '</div>');
      ref = getSty('menu' + currMenu + 'div');
    }
    
    /*if (isNS4) 
    {
      ref = new Layer(0);
      ref.document.write(str);
      ref.document.close();
    }*/
    
    for (currItem = 1; currItem < menu[currMenu].length; currItem++) 
    {
      itemName = 'menu' + currMenu + 'item' + currItem;
      if (isDOM || isIE4) menu[currMenu][currItem].ref = getSty(itemName);
      /*if (isNS4) menu[currMenu][currItem].ref = ref.document[itemName];*/
    }
    
  }
  with (menu[0][0]) 
  {
    ref.left = x;
    ref.top = y;
//    ref.visibility = 'visible';
  }
}

// var defOC = '#F9E473';
// var defBC = '#CCCCFF';
var defOC = '';
var defBC = '';





var popOldWidth = window.innerWidth;
nsResizeHandler = new Function('if (popOldWidth != window.innerWidth) location.reload()');
//if (isNS4) document.captureEvents(Event.CLICK);
document.onclick = clickHandle;

function clickHandle(evt) 
{
  //if (isNS4) document.routeEvent(evt);
  hideAllBut(0);
}

function moveRoot() 
{
  with (menu[0][0].ref) left = (parseInt(left) < 100) ? 100 : 5;
}

function getoffset(e,re_sele) 
{

if(e!=undefined)
  {
  var t=e.offsetTop; var l=e.offsetLeft; var rr;
  while(e=e.offsetParent){t+=e.offsetTop;l+=e.offsetLeft;} 
  if (re_sele=="t"){rr=t+14;} else {rr=l-10;}
  if (window.navigator.userAgent.indexOf("MSIE")>=1){return  (rr+5)+"px";}else{return  rr+"px";}
  }
  else
  { return 0;}
}     

