/****************************************************************************
MOOMENU
version: 1.0
based on: MOOTOOLS v1.11
*****************************************************************************/
var mooMenu = new Class({
	initialize: function(menuClass) {
		this.initMenu(menuClass);
	},
	
	initMenu: function(menuClass) {
		$$("."+menuClass).each(function(el){
			//
			// create another HTML structure & place it in the place of the current menu.
			var menu = el.setStyle("visibility", "hidden").clone();
			menu.injectInside($$("body")[0]);
			menu.setStyles({
				"overflow" : "visible",
				"position" : "absolute",
				"top" : el.getCoordinates().top,
				"left" : "50%", //el.getCoordinates().left,
				"margin-left" : -el.getCoordinates().width/2, //el.getCoordinates().left,
				"visibility": "visible",
				"z-index" : 101
			});
			//
			// add menu behavior
			var buttons = menu.getElements("li");
			buttons.each(function(btn){
				btn.root = btn.getParent().hasClass(menuClass);
				btn.sub = btn.getElement("ul");
				btn.base = (window.ie && !window.ie7) ? new Element("iframe").setProperties({"src" : "about:blank", "frameborder" : "no"}).setStyles({"position" : "absolute", "display": "none", "top" : "-1500px", "left" : "-1500px", "z-index" : 100}).injectBefore(menu) : false;
				btn.addEvent("mouseover", function(e){
					var oThis = $(this);
					var oSize = oThis.getCoordinates();
					//
					// show sub menu if have
					if (oThis.sub) {
						oThis.sub.setStyles({
							"display" : "block",
							"top" : oThis.root ? oSize.height : oThis.offsetTop,
							"left" : oThis.root ? oThis.offsetLeft : oSize.width
						});
						//
						// adjust sub menu position to keep it in the page
						var oSubSize = oThis.sub.getCoordinates();
						if (oSubSize.left+oSubSize.width>window.getWidth()) {
							oThis.sub.setStyles({
								"left" : oThis.root ? oSize.left+oSize.width-oSubSize.width : -oSize.width
							});
						}
						//
						// ie6 select, applet, flash overlay fix
						if (oThis.base) {
							oSubSize = oThis.sub.getCoordinates();
							oThis.base.setStyles({
								"display" : "block",
								"top" : oSubSize.top,
								"left" : oSubSize.left,
								"width" : oSubSize.width,
								"height" : oSubSize.height 
							});
						}
						//
					}
					oThis.addClass("selected");
				});
				btn.addEvent("mouseleave", function(e){
					var oThis = $(this);
					// hide sub menu
					if (oThis.sub) {
						oThis.sub.setStyles({
							"display" : "none",
							"top" : "-1500px",
							"left" : "-1500px"
						});
						if (oThis.base) {
							oThis.base.setStyles({
								"display" : "none",
								"top" : "-1500px",
								"left" : "-1500px"
							});
						}
					}
					oThis.removeClass("selected");
				});
			});
		});
	}
});
//
// generate menu on domready
window.addEvent("load", function(){
	var initMenu = new mooMenu("mainNav");
});