//===========================================
//	GLOBAL VARIABLES
var dom = false;
var ns4 = false;
var ie4 = false;

var isActive = false;
var lastMenuId = "";
var thisMenuId = "";
var isWidthSet = false;

var timeoutMilliSec = 500;
var timeout;

// CONSTANTS
var MAIN_MENU_ITEM_PREFIX = "mainitem_";
var INNER_ITEM = "inner_";
var SUB_MENU_PREFIX = "submenu_";
var SUB_MENU_ITEM_PREFIX = "item_";
var MENU_IMAGE_PREFIX = "img_";
//===========================================

// check browser type on load
document.load = init();

function onMainMenu(id)
{
	var objItem = getObj( MAIN_MENU_ITEM_PREFIX + id );

	if( !objItem ){return;}

	isActive = true;
	var currShowingMenuId = lastMenuId;
	lastMenuId = id;
	if( currShowingMenuId )
	{
		hideMenu( currShowingMenuId , SUB_MENU_PREFIX );
	}

	var objItemStyle = getObjStyle( objItem );
	objItem.className = "main_items_over";
	//objItemStyle.backgroundColor = backgroundColorRollOver;
	//objItemStyle.color = colorRollOver;
	var iconStyle = getObjStyle( getObj( MENU_IMAGE_PREFIX + id ) );
	if( iconStyle )
	{
		iconStyle.visibility = "visible";
	}
	
	var objInnerItem = getObj( INNER_ITEM + MAIN_MENU_ITEM_PREFIX + id );	
	if( objInnerItem )
	{
	objInnerItem.className = "inner_main_items_over";
		//var objInnerItemStyle = getObjStyle( objInnerItem );
		//objInnerItemStyle.backgroundColor = backgroundColorRollOver;
		//objInnerItemStyle.color = colorRollOver;
	}

	var pos = getDisplayPos( id );

	var subMenu = getObj(SUB_MENU_PREFIX + id);
	var iframeObj = getObj(SUB_MENU_PREFIX + id + "_iframe");
	if( subMenu )
	{
		var subMenuStyle = getObjStyle( subMenu );
		var iframeStyle = getObjStyle( iframeObj );

		if( subMenuStyle )
		{
			setWidths();
			subMenuStyle.left = pos.left;
			subMenuStyle.top = pos.top;
			subMenuStyle.visibility = "visible";

			if( ie4 )
			{
				iframeStyle.top = subMenuStyle.top;
				iframeStyle.left = subMenuStyle.left;
				iframeStyle.width = subMenu.offsetWidth + "px";
				iframeStyle.height = subMenu.offsetHeight + "px";
				iframeStyle.display = "";
			}
		}
	}

	
}


function outMainMenu(id)
{
	var objItem = getObj( MAIN_MENU_ITEM_PREFIX + id );
	if( !objItem ){return;}

	objItem.className = "main_items";
	//var objItemStyle = getObjStyle( objItem );
	//objItemStyle.backgroundColor = backgroundColor;
	//objItemStyle.color = color;

	var objInnerItem = getObj( INNER_ITEM + MAIN_MENU_ITEM_PREFIX + id );
	if( objInnerItem )
	{
		objInnerItem.className = "inner_main_items";
		//var objInnerItemStyle = getObjStyle( objInnerItem );
		//objInnerItemStyle.backgroundColor = backgroundColor;
		//objInnerItemStyle.color = color;
	}

	timeOutMenu( id );
}

function timeOutMenu( id )
{
	isActive = false;
	timeout = window.setTimeout( "hideMenu('" + id + "','" + SUB_MENU_PREFIX + "');", timeoutMilliSec);
}

function onSubMenu( pid, id )
{
	isActive = true;
	lastMenuId = pid;

	var subMenuItem = getObj( SUB_MENU_ITEM_PREFIX + id );
	
	if( subMenuItem )
	{
		subMenuItem.className = "sub_items_over";
	}

/*
	var subMenuItemStyle = getObjStyle( getObj( SUB_MENU_ITEM_PREFIX + id ));
	if( subMenuItemStyle )
	{
		subMenuItemStyle.color = colorRollOver;
		subMenuItemStyle.backgroundColor = backgroundColorRollOver;
	}
*/
}

function outSubMenu( pid, id )
{
	parentId = pid;
	lastMenuId = parentId;
	timeOutMenu( parentId );
	
	var subMenuItem = getObj( SUB_MENU_ITEM_PREFIX + id );
	
	if( subMenuItem )
	{
		subMenuItem.className = "sub_items";
	}	
	/*
	var subMenuItemStyle = getObjStyle( getObj( SUB_MENU_ITEM_PREFIX + id ));
	if( subMenuItemStyle )
	{
		subMenuItemStyle.color = color;
		subMenuItemStyle.backgroundColor = backgroundColor;
	}
	*/
}

/**
* Hidden a given menu
*/
function hideMenu( id , prefix )
{
	if( isActive && lastMenuId == id )
	{
		return;
	}
	var menu = getObjStyle( getObj(prefix + id) );
	if( menu )
	{
		menu.visibility = "hidden";
	}
	var iconObj = getObj( MENU_IMAGE_PREFIX + id );
	if( iconObj )
	{
		getObjStyle( iconObj ).visibility = "hidden";
	}

	var iframeObj = getObj( prefix + id + "_iframe" );
	if( ie4 )
	{
		if( iframeObj )
		{
			getObjStyle(iframeObj).display = "none";
		}
	}
}

function clickUrl(url)
{
	if( url != "" )
	{
		window.location = url;
	}
}


//===========================================
// UTILITIES FUNCTIONS
//===========================================
function init()
{
	detectBrowserType();
}

/**
* Detect browser's version
*/
function detectBrowserType()
{
	if( document.getElementById ) //IE5+, Netscape 6+
	{
		dom = true;
	}
	
	if( document.layers )	//Netscape 4, 5
	{
		ns4 = true;
	}
	
	if( document.all )	//IE4
	{
		ie4 = true;
	}
	
	if( dom == false && ns4 == false && ie4 == false )	// older browser like IE3, Netscape3, etc.
	{
		showErrMsg("Sorry, your browser does not support the drop down menu.");
		dom = ns4 = ie4 = false;
	}
}

/**
* Return element object
*/
function getObj( id )
{
	if( dom )
	{
		return document.getElementById( id );
	}
	else if( ie4 )
	{
		return document.all[id];
	}
	else if( ns4 )
	{
		return document.layers[id];
	}
	else
	{
		return null;
	}
}

/**
* Return style object
*/
function getObjStyle( obj )
{
	if( !obj ) return null;
	if( dom || ie4 )
	{
		return obj.style;
	}
	else if( ns4 )
	{
		return obj;
	}
	else
	{
		return null;
	}
}

/**
* showErrMsg
*/
function showErrMsg( msg )
{
	alert( msg );
}

/**
* Log Error, FOR DEBUG ONLY
*/
function Log( msg )
{
	var log = getObj("log");
	if( log )
		log.innerHTML += msg + "<br/>";
}

/**
* Get the absolute position of an object in the browser window
*
* @ parameter: obj , any object in the document
* @ return: an obj with obj.x and obj.y
*/
function getAbsPos( obj )
{
	for (var abs_x=0,abs_y=0;obj!=null;abs_x+=obj.offsetLeft,abs_y+=obj.offsetTop,obj=obj.offsetParent);
	return {x:abs_x,y:abs_y}
}

/**
* getDisplayPos
*/
function getDisplayPos( parentId )
{
	var parentObj = getObj( MAIN_MENU_ITEM_PREFIX + parentId );
	//Log( MAIN_MENU_ITEM_PREFIX + parentId + "-" + parentObj );
	if( parentObj )
	{
		var parentPos = getAbsPos( parentObj );
		var x = parentPos.x;
		var y = parentPos.y + parentObj.offsetHeight + 1;
		return {left:x, top:y}
	}
}

function setWidths()
{
	if( isWidthSet == false )
	{
		isWidthSet = true;
		var objs = document.getElementsByTagName( "td" );
		for( var i = 0; i < objs.length; i++ )
		{
			var itemId = objs[i].id;
			if( itemId.indexOf(MAIN_MENU_ITEM_PREFIX) > -1 )
			{

				var id = itemId.substr( MAIN_MENU_ITEM_PREFIX.length  , 1 );
				setChildrenWidth( id , objs[i].offsetWidth );
			}
		}
	}

}

function setChildrenWidth( id , parentWidth )
{
	var maxWidth = 0;
	var objs = document.getElementsByTagName( "div" );
	for( var i = 0; i < objs.length; i++ )
	{
		var itemId = objs[i].id;
		if( itemId.indexOf(SUB_MENU_ITEM_PREFIX + id) > -1 )
		{
			if( objs[i].offsetWidth > maxWidth )
			{
				maxWidth = objs[i].offsetWidth;
			}
		}
	}

	if( maxWidth < parentWidth )
	{
		maxWidth = parentWidth;
	}

	for( var i = 0; i < objs.length; i++ )
	{
		var itemId = objs[i].id;
		if( itemId.indexOf(SUB_MENU_ITEM_PREFIX + id) > -1 )
		{
			getObjStyle(objs[i]).width = maxWidth;
		}
	}
}