var Menu = Class.create();
Menu.prototype = {
	initialize : function(id) {
		this.id = id + "_menu";
		this.items = [];
		this.createElement();
		this.setVisible(false);
	},
	add : function(subMenu) {
		this.items.push(subMenu);
		this.redraw();
	},
	createElement : function() {
		this.element = document.createElement("div");
		this.element.setAttribute("id", this.id);
		this.element.className = "javawideMenu";
		document.body.appendChild(this.element);
	},
	setVisible : function(visible) {
		this.visible = visible ? "block" : "none";
		this.element.style.display = this.visible;
	},
	setPosition : function(pos) {
		var style = this.element.style;
		style.position = "absolute";
		style.left = pos.x + "px";
		style.top = pos.y + "px";
	},
	redraw : function() {
		this.items.each(function(item) {
			this.element.appendChild(item.element);
		}.bind(this));
	}
};
var SubMenu = Class.create();
SubMenu.prototype = {
	initialize : function(id, title, clickHandler) {
		this.id = id;
		this.title = title;
		this.items = [];
		this.createElement();
		this.clickHandler = clickHandler || function(){};
	},
	add : function(menuItem) {
		this.items.push(menuItem);
	},
	createElement : function() {
		this.menuPlaceHolder = new Panel(this.id+"SubMenu_MenuHolder");
		this.element = document.createElement("div");
		this.element.setAttribute("id", this.id);
		this.element.appendChild(document.createTextNode(this.title));
		if(!$(this.id + "SubMenu_MenuHolder")) {
			this.element.appendChild(this.menuPlaceHolder.element);
		}
		Event.observe(this.element, "click", function(event) {
		 	this.menuPlaceHolder.setVisible(true);
			this.menuPlaceHolder.setPosition({ x: $(this.element).getDimensions().width, y: 0 });
			this.menuPlaceHolder.element.innerHTML = "";
			this.items.each(function(item) {
				item.createElement();
				this.menuPlaceHolder.element.appendChild(item.element);
			}.bind(this));
			this.clickHandler();
		}.bindAsEventListener(this));
	}
};
var MenuItem = Class.create();
MenuItem.prototype = {
	initialize : function(id, title, clickHandler) {
		this.id = id;
		this.title = title;
		this.createElement();
		this.clickHandler = clickHandler || function(){};
	},
	createElement : function() {
		this.element = document.createElement("div");
		this.element.setAttribute("id", this.id);
		this.element.appendChild(document.createTextNode(this.title));
		Event.observe(this.element, "click", function(event) {
			this.clickHandler(event);
		}.bindAsEventListener(this));
	}
};