var ContextMenu = Class.create();
ContextMenu.prototype = 
{	
	contextMenuContainer: null,
	contextMenuItemList: null,
	lastContextMenuEffect: null,
	keepMenu: false,
	menuTimer: null,
	
	addMenuItem: function(name,link,classname)
	{
		var li = $(document.createElement("li"));
		if (classname)
		{
			li.addClassName(classname);
		}
		
		li.innerHTML = "<a href='" + link + "'>" + name + "</a>";		
		this.contextMenuItemList.appendChild(li);
	},
	
	clearMenu: function()
	{		
		this.contextMenuItemList.select('li').each(function(item) {
			if (!item.hasClassName('static'))
			{
				item.remove();
			}
		});
	},
	
	showToolTipp: function(item, text)
	{
		this.clearMenu();
		var li = $(document.createElement("li"));
		li.innerHTML = text;
		this.contextMenuItemList.appendChild(li);		
		this.showMenu(item);
	},
	
	showMenu: function(item)
	{
		var pos = item.viewportOffset();			
		var bubbledim = this.contextMenuContainer.getDimensions();
		var scrolloffset = document.viewport.getScrollOffsets();
		
		var imgoffsetx = (item.getWidth()/2);
		var bubbleoffsetx = (bubbledim["width"]/2);
						
		var bubblex = pos["left"] + scrolloffset["left"] + imgoffsetx - bubbleoffsetx;
		var bubbley = pos["top"] + scrolloffset["top"] - bubbledim["height"]-5;
		this.contextMenuContainer.setStyle({left: bubblex+"px", top: bubbley+"px"});
		
		if (this.lastContextMenuEffect) this.lastContextMenuEffect.cancel();
		this.lastContextMenuEffect = new Effect.Appear(this.contextMenuContainer,{duration: 0.2});	
	},
	
	startMenuHideTimer: function()
	{
		var self = this;
		window.setTimeout(function() {
			if (!self.keepMenu)
			{
				self.lastContextMenuEffect = new Effect.Fade(self.contextMenuContainer,{duration: 0.2});			
			}
		}, 200);
	},
	
	hideMenu: function()
	{
		this.contextMenuContainer.hide();
		this.lastContextMenuEffect = null;
		this.keepMenu = false;
	},
	
	initialize: function()
	{
		var self = this;

		//Context Menu bauen
		this.contextMenuContainer = $(document.createElement('div'));
		this.contextMenuContainer.addClassName('context-menu-container');
		this.contextMenuContainer.hide();
		
		this.contextMenuContainer.observe("mouseover",function(e) {
			self.keepMenu = true;			
		});
		
		this.contextMenuContainer.observe("mouseout",function(e) {
			self.keepMenu = false;	
			self.startMenuHideTimer();		
		})		
		
		this.contextMenuItemList = $(document.createElement("ul"));
		this.contextMenuContainer.appendChild(this.contextMenuItemList);
		
		document.body.insertBefore(this.contextMenuContainer, document.body.childNodes[0]);	
	}
}

contextmenu = null;
Event.observe(window,"load",function() {
	contextmenu = new ContextMenu();
})
