
function Menu(menuHandler){
	var menu;
	var categorySpan = new Array();
//	layoutMenuCategory,createCategoryArray,fireCategorySelected,menuMouseOver,menuMouseOut	
//	menuLayout,        createCategoryArray,fireCategorySelected,menuMouseOver,menuMouseOut
	this.initMenu = function(){
	    var loader = new xmlLoader("Menu.do",new InitCallBack());
	    loader.start();
	}
	
	function InitCallBack(){
	    //XML通信CallBack2
	    this.callback2 = function(txt){
	    	if(true){
				menu = eval(txt);
	    	}
			createMenu();
			menuHandler.menuModelLoaded(menu);
	    }
	}
	function createMenu(){
		var spanArray = new Array();
		for(var i = 0; i < menu.length;i++){
			if(menuHandler.acceptCategory(menu[i])){
				var span = menuHandler.createCategoryArray(menu[i]);
				spanArray.push(span);
			}
		}
		categorySpan = spanArray;
		menuHandler.menuLayout(spanArray);
		var defaultCategory;
		var spanindex=0;
		for(var i = 0; i < menu.length;i++){
			if(menuHandler.acceptCategory(menu[i])){
				var span = spanArray[spanindex];
				span.href = "";
				span.onclick = menuClicked;
				span.appendChild(document.createTextNode(menu[i].caption));
				span.style.whiteSpace = "nowrap";
				span.menuCategory = menu[i];
				span.onmouseover = menuHandler.menuMouseOver;
				span.onmouseout = menuHandler.menuMouseOut;
				spanindex++;
			}
		}
		menuHandler.createMenuItemMenu();
	}



	function menuClicked(){
		setCategory(this.menuCategory);
		return false;
	}
	
	function setCategory(menuCategory){
		menuHandler.fireCategorySelected(categorySpan,menuCategory);
		menuHandler.createMenuItem(menuCategory);
	}
	
	this.getMenuModel = function(){
		return menu;
	}
	this.setCategory = function(menuCategory){
		setCategory(menuCategory)
	}
	
	
}