
var ContextMenu = {
	show: function(handle) {
		this.init();
		var content = handle.nextSibling;
		while (content != null && !(content.nodeType == 1 && Element.hasClassName(content, "contextMenu"))) {
			content = content.nextSibling;
		}
		this.menu.innerHTML = "";
		var clone = content.cloneNode(false);
		this.menu.appendChild(clone);
		clone.innerHTML = content.innerHTML;
		this.showPage(clone);
		var label = handle.previousSibling;
		while (label != null && label.tagName != "A") {
			label = label.previousSibling;
		}
		this.label = (label != null) ? label : handle;
		var offsetTop = Element.getDimensions(this.label).height;
		var cloneHeight = Element.getDimensions(clone).height;
		var up = false;
		if (Position.cumulativeOffset(this.label)[1] + cloneHeight > document.body.clientHeight - 50) {
			offsetTop = cloneHeight * -1;
			up = true;
		}
		Position.absolutize(this.menu);
		Position.clone(this.label, this.menu, {
			offsetTop: offsetTop,
			setWidth: false,
			setHeight: false
		});
		if (up && Position.cumulativeOffset(this.menu)[1] < 0) {
			Position.clone(this.label, this.menu, {
				offsetTop: Element.getDimensions(this.label).height,
				setWidth: false,
				setHeight: false
			});
		}
		Element.addClassName(this.menu, "on");
		Element.addClassName(this.mask, "on");
		Element.addClassName(this.label, "on");
//		Shepherd.getHelper('bubble').hideSelectBoxes();
		return false;
	},
	showPage: function(clone) {
		var ul = clone.getElementsByTagName("UL")[0];
		if (ul != null) {
			var holders = $$("ul.pageHolder");
			if (holders != null && holders.length > 0) {
				var holder = holders[0];
				eval("params = " + holder.id);
				holder.id = "contextMenuPageasdfasdf";
				alert('Load View!');
//				Shepherd.run("view", "loadView", {
//					page: params.page,
//					container: holder.id,
//					params: params.params
//				});

			}
		}
	},
	hide: function() {
		try {
			Element.removeClassName(ContextMenu.menu, "on");
			Element.removeClassName(ContextMenu.mask, "on");
			Element.removeClassName(ContextMenu.label, "on");
			ContextMenu.label = null;
			ContextMenu.menu.innerHTML = "";
		} catch(e) {}
//		Shepherd.getHelper('bubble').showSelectBoxes();
		return false;
	},
	init: function() {
		if (this.menu == null) {
			this.menu = document.createElement("DIV");
			Element.addClassName(this.menu, "contextMenuMain");
			document.body.appendChild(this.menu);
		}
		if (this.mask == null) {
			this.mask = document.createElement("DIV");
			Element.addClassName(this.mask, "contextMenuMask");
			document.body.appendChild(this.mask);
			this.mask.onclick = this.hide;
		}
	}
};
