var Instinct_Menubar__bRootVisible = null;		//root menu bar whose menu items are visible
var Instinct_Menubar__hTimer = null;
var g_oMenubarHash = new Array();

//- Instinct_Menubar -//
function Instinct_Menubar(oInstinct, cName) {
//- Model - Initialize -//
	this.name = cName;
	this.menubar = new Array();

	//+ callback
	this.onMouseOver_Delegate_Hash = new Array();
	this.onMouseOut_Delegate_Hash = new Array();

	//+ default values for all menues
	this.bodyWidth = 800;
	this.menuItemWidth = 0;
	this.menuItemHeight = 0;
	this.menuItemOffset_Left = 0;
	this.menuItemOffset_Top = 0;
	this.menuItemOffset_Right = 0;
	this.menuItemOffset_Bottom = 0;
	this.menuItemOffset_Inner = 0;

	this.menuDropDirection = 1;
	this.menuContainerBgColor = '';
	this.zIndex = 200;
	this.cssForeId = '';
	this.resizeTimer = 0;

	this.image_o = new Array();
	this.image_x = new Array();

//- Model - Link -//
	this.addMenu = addMenu;
	this.registerOnMouseOver = registerOnMouseOver;
	this.registerOnMouseOut = registerOnMouseOut;
	this.generateMenubar = generateMenubar;
	this.getMenu = getMenu;
	this.onLoad = onLoad;
	this.onResize = onResize;
	this.onMouseOver = onMouseOver;
	this.onMouseOut = onMouseOut;

//- Mode - Implementation -//
	//- Implementation : Menu -//
	function addMenu(hMenu) {
		var oMenu = new Instinct_Menu(oInstinct, this, hMenu);
		this.menubar[hMenu] = oMenu;
		return(oMenu);
	}
	function addDarren(hMenu, cImageO, cImageX) {
		var oMenu = new Instinct_Menu(oInstinct, this, hMenu);
		this.menubar[hMenu] = oMenu;

		this.image_o[hMenu] = cImageO;
		this.image_x[hMenu] = cImageX;

		return(oMenu);
	}

	function registerOnMouseOver(fMouseOver) {
		this.onMouseOver_Delegate_Hash[this.onMouseOver_Delegate_Hash.length] = fMouseOver;
	}
	function registerOnMouseOut(fMouseOut) {
		this.onMouseOut_Delegate_Hash[this.onMouseOut_Delegate_Hash.length] = fMouseOut;
	}

	function generateMenubar() {
		for (var hMenu in this.menubar) {
			this.menubar[hMenu].generateMenu();
		}
	}
	
	function getMenu(hMenu) {
		return this.menubar[hMenu];
	}

	function onLoad() {
		for (hMenu in this.menubar) {
			var oMenu = this.menubar[hMenu];
			oMenu.onLoad();
			oMenu.hide();
		}
	}

	function onResize() {
		for (hMenu in this.menubar) {
			var oMenu = this.menubar[hMenu];
			oMenu.onLoad();
			oMenu.hide();
		}
	}
	function onMouseOver(hMenu) {
		Instinct_Menu__onMouseOver(this.menubar[hMenu]);
	}
	function onMouseOut(hMenu) {
		Instinct_Menu__onMouseOut(this.menubar[hMenu]);
	}
}

//- static -//
function Instinct_Menubar__onResize() {
	if ((typeof(g_oMenubarHash) == 'undefined') || (g_oMenubarHash == null)) {
		return;
	}
	//+ send onResize event to menubars
	for (hMenubar in g_oMenubarHash) {
		g_oMenubarHash[hMenubar].onResize();
	}
}

function Instinct_Menubar__Create(oInstinct, cName) {
	g_oMenubarHash['Global'] = new Instinct_Menubar(oInstinct, cName);
	return(g_oMenubarHash['Global']);
}

//- Register Event -//
oInstinct.registerOnResize(Instinct_Menubar__onResize);
