//自動關 MENU 計時器
var autoOffMenuTimer;

// menuStack 用來儲存打開過的 menu
var menuStack = new Array();

var menuTable = new Hashtable();

//Menu Class 定義
function MenuItem(s_Name,s_Link, s_CSS_on,s_CSS_off,s_Target, i_OwnerTab, i_OwnerBar, channelid)
{
	this.sName = s_Name;
	this.sLink = s_Link;
	this.sCSS_on = s_CSS_on;
	this.sCSS_off = s_CSS_off;
	this.sMenuItemID = '';
	this.sChannelID = channelid;
	this.clsName = 'MenuItem';
	this.sParent = '';
	this.parentMenu = null;
	this.i_OwnerTab = i_OwnerTab;
	this.i_OwnerBar = i_OwnerBar;
	this.sTarget = s_Target;
}

function Menu(s_Name,s_Link,s_IDX,s_CSS_on,s_CSS_off,s_Target, i_OwnerTab, i_OwnerBar, channelid)
{	
	this.sMenuName = s_Name;
	this.sMenuID = s_IDX;
	this.items = new Array();
	this.clsName = 'Menu';
	
	this.sMenuItemID = '';
	this.sChannelID = channelid;

	this.sParent = '';

	this.sLink = s_Link;
	this.sTarget = s_Target;

	this.sCSS_on = s_CSS_on;
	this.sCSS_off = s_CSS_off;

	this.i_OwnerTab = i_OwnerTab;
	this.i_OwnerBar = i_OwnerBar;
}

Menu.prototype.AddItem = function(item){
	item.sMenuItemID = this.sMenuID + '_' + this.items.length;	
	item.sParent = this.sMenuID;
	item.parentMenu = this;
	item.i_OwnerTab = this.i_OwnerTab;
	item.i_OwnerBar = this.i_OwnerBar;
	this.items[this.items.length] = item;
	menuTable.put(item.sChannelID, item);
}

Menu.prototype.WriteMenu = function(){
	
	var sHTML = '<div id="' + this.sMenuID + '" style="display:none;position:absolute;z-index:10" class="content"><table border="0" cellspacing="0" cellpadding="0" class="items">';

	var icount = 0;
	var sIcon;
	var itemID = '';
	var cmdQ = new Array();
	var cmdCount = 0;
	if (this.items.length > 0)
	{
		sHTML+='<tr><td colspan="2"><img src="/ch/comm/images/menu/spacer2.gif" height="1" width="1"></td></tr>';
	}
	for(icount = 0;icount < this.items.length ; icount++)
	{
		var s_ShowSub = "";
		var ownerTab = this.items[icount].i_OwnerTab;
		var ownerBar = this.items[icount].i_OwnerBar;

		switch(this.items[icount].clsName)
		{
			case 'MenuItem':
				itemID = this.items[icount].sMenuItemID;
				parentItemID = this.items[icount].parentMenu.sMenuItemID;
				targetFix = "";
				if(this.items[icount].sTarget != '') targetFix = ' target="' + this.items[icount].sTarget + '" ';
				menuBody = '<a ' + targetFix + ' onClick="setCurrentMenuItem(\'' + itemID + '\',\'' + parentItemID + '\', ' + icount + ', ' + ownerTab + ', ' + ownerBar + ');'+this.items[icount].sLink+ '" href="#" onMouseOut="" onMouseOver="" href="#">'+this.items[icount].sName+'</a>';
			break;
			case 'Menu':
				itemID = this.items[icount].sMenuItemID;
				sLink = (this.items[icount].sLink)? this.items[icount].sLink:"javascript:void(0)";
				targetFix = "";
				if(this.items[icount].sTarget != '') targetFix = ' target="' + this.items[icount].sTarget + '" ';
				s_ShowSub = 'showSubMenu(\'td_'+ itemID +'\',\''+ this.items[icount].sMenuID + '\')';
				if (sLink == 'javascript:void(0)')
					menuBody = '<span style="cursor:default" onClick="setCurrentMenuItem(\'' + itemID + '\',\'\', ' + icount + ', ' + ownerTab + ', ' + ownerBar + ')" onMouseOut="" onMouseOver="showSubMenu(\'td_'+ itemID +'\',\''+ this.items[icount].sMenuID + '\')">'+this.items[icount].sMenuName+'</span>';
				else
					menuBody = '<a ' + targetFix + ' onClick="setCurrentMenuItem(\'' + itemID + '\',\'\', ' + icount + ', ' + ownerTab + ', ' + ownerBar + ');'+sLink+ '" href="#" onMouseOut="" onMouseOver="showSubMenu(\'td_'+ itemID +'\',\''+ this.items[icount].sMenuID + '\')">'+this.items[icount].sMenuName+'</a>';
				cmdQ[cmdCount++] = 'this.items['+icount+'].WriteMenu();';
			break;
		}
		if (ownerBar == null)
		{
			alert(this.items[icount].itemID);
		}		
		sHTML += '  <tr class="item" id="tr_' + itemID + '">';
		//sHTML += '    <td width="32">'+sIcon+'</td>';
		sHTML += '    <td id="td_' + itemID + '" class="'+ this.items[icount].sCSS_off +'" onmouseover="clearTimeout(autoOffMenuTimer);setMenuActive(this,'+icount+','+ownerBar+');'+s_ShowSub+'" onmouseout="doMouseOut(\''+ this.sMenuID +'\');setMenuInActive(this,'+icount+')" style="padding: 4px 4px 4px 5px;" nowrap="nowrap">' + menuBody + '</td>';
		sHTML += '<td id="arr_' + itemID + '" class="'+ this.items[icount].sCSS_off +'" style="padding: 4px 5px 4px 4px;" width="14">';
		if(this.items[icount].clsName == 'Menu')
		{
			if(this.items[icount].items.length>0)
				sHTML += '<img src="/ch/comm/images/menu/icon_next.gif" height="14" width="14">';
		}
		sHTML += '</td>';
		sHTML += '  </tr>';
	}
	if (this.items.length > 0)
	{
		sHTML+='<tr><td colspan="2"><img src="/ch/comm/images/menu/spacer2.gif" height="1" width="1"></td></tr>';
	}
	sHTML += '</table></div>';
	//document.frmDebug.tDebug2.value += sHTML;
	document.write(sHTML);
	for(var itemp = 0;itemp<cmdQ.length;itemp++)
	{
		eval(cmdQ[itemp]);
	}
	cmdQ.length=0;
}

function showMenu(el,idx)
{
	collapseMenuTree(1);

	eval('var o = '+ idx.replace(';','') + ';');
	for(var i =0;i<o.items.length;i++)
	{
		if(document.getElementById('td_'+idx+'_'+i).className != 'menu_click')
			setMenuInActive(document.getElementById('td_'+idx+'_'+i),i);
	}
	
	var m = document.getElementById(idx);
	if(m) 
	{
		//m.style.display = '';
		showDiv(idx, true);
		//document.frmDebug.tDebug.value = m.innerHTML;
	
		var xy = YAHOO.util.Dom.getXY(el);
	
		var agt=navigator.userAgent.toLowerCase();
	// Note: Opera and WebTV spoof Navigator.  We do strict client detection.
	// If you want to allow spoofing, take out the tests for opera and webtv.
	var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
	              && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
	              && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));

//		if(is_nav)
//			xy[1]+=15;
//		else
//			xy[1]+=55;
		xy[1]+=27;
		YAHOO.util.Dom.setXY(idx,xy);
		showDiv(idx, true);

		menuStack[menuStack.length] = idx;
		
	}
	clearTimeout(autoOffMenuTimer);

	if (previousEl != '') setMenuClick(previousEl, previousIdx);
	if (previousParentEl != '') setMenuClick(previousParentEl, previousIdx);
}
function showSubMenu(el,idx)
{
	var root = getRoot(idx);
	collapseMenu(root);

	var temp = el.split('_');
	eval('if('+temp[1]+') var o = '+ temp[1]+ ';');
	for(var i =0;i<o.items.length;i++)
	{
		var ii = temp[2];
		if(ii) ii = parseInt(ii);
		if(i == ii) continue;
		if(document.getElementById('td_'+temp[1]+'_'+i).className != 'menu_click')
		setMenuInActive(document.getElementById('td_'+temp[1]+'_'+i),i);
	}
	var m = document.getElementById(idx);
	// m.style.display = '';
	showDiv(idx, true);
	//document.frmDebug.tDebug.value = m.innerHTML;
	// fix el.
	var fixel = el.replace('td','arr');
	var xy = YAHOO.util.Dom.getXY(fixel);
	xy[0]+=23;
	xy[1]-=3;
	YAHOO.util.Dom.setXY(idx,xy);
	showDiv(idx, true);
	menuStack[menuStack.length] = idx;
	clearTimeout(autoOffMenuTimer);

	if (previousEl != '') setMenuClick(previousEl, previousIdx);
	if (previousParentEl != '') setMenuClick(previousParentEl, previousIdx);
}
function collapseMenuTree(first)
{
	if(menuStack.length>0)
	{
		for(var ite = menuStack.length-1;ite>=0;ite--)
		{
				var m = document.getElementById(menuStack[ite]);



				// m.style.display = 'none';
				showDiv(menuStack[ite], false);
		}
	}
	menuStack.length = 0;
//	init_menu(defaultTabIndex,defaultBarIndex,defaultMenuIndex,defaultItemIndex);
}
function collapseMenu(root)
{
	var disCount = 0;
	if(menuStack.length>0)
	{
		for(var ite = menuStack.length-1;ite>=0;ite--)
		{
			if(menuStack[ite] != root)
			{
				var m = document.getElementById(menuStack[ite]);

				//m.style.display = 'none';
				showDiv(menuStack[ite], false);
				disCount++;
			}
		}
		menuStack.length -= disCount;
	}
}
function doMouseOut(idx)
{
	autoOffMenuTimer = setTimeout('collapseMenuTree()',500);
	autoTabOffTimer = setTimeout('_restore_tab()',500);
}
function getRoot(obj_name)
{
	obj_name.replace(";","");
	var root = '';
	eval('if('+obj_name+') var o = '+obj_name+';');
	
	if(o)
	{
		if(o.sParent)
		{
			root = getRoot(o.sParent);
		}
		else
		{
			return o.sMenuID;
		}
	}
	return root;
}
var previousEl = '';
var previousParentEl = '';
var previousIdx = '';
function setMenuClick(el,idx)
{
	var temp = el.id.split('_');
	var obj_name = temp[1];
	obj_name.replace(";","");
	eval('if('+obj_name+') var o = '+obj_name+';');
	el.className = 'menu_click';
	el.nextSibling.className = 'menu_click';
	if (el.nextSibling.firstChild != null) {
		el.nextSibling.firstChild.src = '/ch/comm/images/menu/icon_next_on.gif';
	}
}

var menu3Act = '';
function setMenuActive(el,idx, ownerBar)
{
	do_bar_on(ownerBar);

	var temp = el.id.split('_');
	var obj_name = temp[1];
	obj_name.replace(";","");
	eval('if('+obj_name+') var o = '+obj_name+';');
	el.className = o.items[0].sCSS_on;
	el.nextSibling.className = o.items[0].sCSS_on;
	if (el.nextSibling.firstChild != null) {
		el.nextSibling.firstChild.src = '/ch/comm/images/menu/icon_next_on.gif';
	}

	if (previousEl != '') setMenuClick(previousEl, previousIdx);
	if (previousParentEl != '') setMenuClick(previousParentEl, previousIdx);
	if(o.sParent == '' || menu3Act == '')
	{
		menu3Act = el.id;
	}
	else
	{
		if(document.getElementById(menu3Act).className != 'menu_click')
		{
			var temp = menu3Act.split('_');
			var obj_name = temp[1];
			obj_name.replace(";","");
			eval('if('+obj_name+') var o = '+obj_name+';');
			var _el = document.getElementById(menu3Act);
			_el.className = o.items[0].sCSS_on;
			_el.nextSibling.className = o.items[0].sCSS_on;
			if (_el.nextSibling.firstChild != null) {
				_el.nextSibling.firstChild.src = '/ch/comm/images/menu/icon_next_on.gif';
			}
		}
	}
}

function setMenuInActive(el,idx)
{
	if (previousEl != '')
	{
		if (el.id == previousEl.id)
		{
			return;
		}	
	}

	if (previousParentEl != '')
	{
		if (el.id == previousParentEl.id)
		{
			return;
		}	
	}

	var temp = el.id.split('_');
	var obj_name = temp[1];
	obj_name.replace(";","");
	eval('if('+obj_name+') var o = '+obj_name+';');
	el.className = o.items[0].sCSS_off;
	el.nextSibling.className = o.items[0].sCSS_off;
	if (el.nextSibling.firstChild != null) {
		el.nextSibling.firstChild.src = '/ch/comm/images/menu/icon_next.gif';
	}

}

function setCurrentMenuItem(itemID, parentItemID, idx, ownerTab, ownerBar)
{
	el = document.getElementById("td_"+itemID);
	parentEl = document.getElementById("td_"+parentItemID);

	if (parentItemID != '')
	{
		setMenuActive(parentEl, idx, ownerBar);
	}

	if (previousEl != '')
	{
		var testEl = previousEl;
		var testIdx = previousIdx;
		previousEl = '';
		previousIdx = '';
		setMenuInActive(testEl, 0);
	}
	
	if (previousParentEl != '') {

		var testEl = previousParentEl;
		var testIdx = previousIdx;
		previousParentEl = '';
		setMenuInActive(testEl, 0);	
	}

	previousEl = el;
	previousIdx = idx;

	createCookie("previousItemID", itemID, 1);
	createCookie("previousIdx", previousIdx, 1);
	createCookie("previousParentItemID", parentItemID, 1);

	if (parentItemID != '')
	{
		previousParentEl = parentEl; 
	}

	if (clickBar != 0) {
		var offBar = clickBar;
		clickBar = ownerBar;
		do_bar_off(offBar);
	}

	if (clickTab != 0) {
		var offTab = clickTab;
		clickTab = ownerTab;
		do_tab_off(offTab);
	}
	
	clickBar = ownerBar;
	clickTab = ownerTab;
	createCookie("clickBar", clickBar, 1);
	createCookie("clickTab", clickTab, 1);
	do_bar_on(ownerBar);
	do_tab_on(ownerTab);
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name, defaultValue) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return defaultValue;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function showDiv(sDivID, bState) {
	
	var iframeid = 1;
	var level = sDivID.split('m');
	if (level.length == 3) {
		iframeid = 2;
	}
	
	showDivByFrameId(sDivID, bState, iframeid);
}

function showDivByFrameId(sDivID, bState, iframeid) {
	
    var oDiv = document.getElementById(sDivID);
    /*@cc_on
    @if (@_jscript_version >= 5)

	var oIframe = createIframe(oDiv, 'HelpFrame'+iframeid);

    @end @*/
    if (bState) {
        oDiv.style.display = 'block';
        /*@cc_on
        @if (@_jscript_version >= 5)

		showIframe('HelpFrame'+iframeid, oDiv.style.top, oDiv.style.left, oDiv.style.zIndex - 1, parseInt(oDiv.offsetWidth), parseInt(oDiv.offsetHeight), true);

        @end @*/
    }
    else {
        /*@cc_on
        @if (@_jscript_version >= 5)

		showIframe('HelpFrame'+iframeid, 0, 0, 0, 0, 0, false);

        @end @*/
        oDiv.style.display = 'none';
    }
}

function createIframe(oDiv, iframeid) {
	
	/*@cc_on
	@if (@_jscript_version >= 5)
	if (getInternetExplorerVersion() > 6) return;
	
	var oIframe;
    try {
        var oIframe = document.getElementById(iframeid);
        oIframe.scrolling = 'no';
    }
    catch (e) {
        var oIframe = document.createElement('iframe');
        var oParent = oDiv.parentNode;
        oIframe.id = iframeid;
		oIframe.src = "/ch/comm/images/menu/spacer2.gif";
        oParent.appendChild(oIframe);
    }

    oIframe.frameborder = 0;
    oIframe.style.position = 'absolute';
    oIframe.style.top = 0;
    oIframe.style.left = 0;
    oIframe.style.display = 'none';
	return oIframe;

	@end @*/
}

function showIframe(iframeid, top, left, zIndex, width, height, bState) {
	
	/*@cc_on
	@if (@_jscript_version >= 5)
	if (getInternetExplorerVersion() > 6) return;

	var oIframe = document.getElementById(iframeid);

    if (bState) {

        oIframe.style.top = top;
        oIframe.style.left = left;
        oIframe.style.zIndex = zIndex;
        oIframe.style.width = width;
        oIframe.style.height = height;
        oIframe.style.display = 'block';
        
    }
    else {
        
        oIframe.style.display = 'none';
    }
	@end @*/
}

function showLv4Div(sDivID, bState) {
	
	var level = sDivID.split('_');
	var pid = level[1];

    var oDiv = document.getElementById(sDivID);
	var oTable = document.getElementById("lv4table_"+pid);
	var oIcon =  document.getElementById("lv4icon_"+pid);

    /*@cc_on
    @if (@_jscript_version >= 5)

	var oIframe1 = createIframe(oDiv, 'Lv4HelpFrame1');
	var oIframe2 = createIframe(oDiv, 'Lv4HelpFrame2');

    @end @*/
    if (bState) {
        oDiv.style.display = 'block';
		/*@cc_on
		@if (@_jscript_version >= 5)

		showIframe('Lv4HelpFrame1', oDiv.style.top, oDiv.style.left, oDiv.style.zIndex - 1, oTable.offsetWidth + oIcon.offsetWidth, oIcon.offsetHeight, true);
		showIframe('Lv4HelpFrame2', oDiv.style.top, oDiv.style.left, oDiv.style.zIndex - 1, oTable.offsetWidth, oTable.offsetHeight, true);

		@end @*/
    }
    else {
		/*@cc_on
		@if (@_jscript_version >= 5)

		showIframe('Lv4HelpFrame1', 0, 0, 0, 0, 0, false);
		showIframe('Lv4HelpFrame2', 0, 0, 0, 0, 0, false);

		@end @*/
        oDiv.style.display = 'none';
    }
}

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

function setCurrentTabBar (ownerTab, ownerBar, flag) 
{
	if (clickBar != 0) {
		var offBar = clickBar;
		clickBar = ownerBar;
		do_bar_off(offBar);
	}

	if (clickTab != 0) {
		var offTab = clickTab;
		clickTab = ownerTab;
		do_tab_off(offTab);
	}
	
	clickBar = ownerBar;
	clickTab = ownerTab;
	createCookie("clickBar", clickBar, 1);
	createCookie("clickTab", clickTab, 1);

	if (clickBar != 0)
	{
		do_bar_on_1(ownerBar, flag);
	}

	if (clickTab != 0)
	{
		do_tab_on(ownerTab);
	}
}
