var MenuHeader = new Class
({
	menuElement: null,
	deactivateTimer: null,
	activePath: [],
	
	homeBanner: null,
	
	items: [],
	back: null,
	
	initialize: function()
	{
		this.menuElement = document.getElement("#header ul.menu");
		this.items = this.menuElement.getElements("li");
		
		this.__enchanceRX();
		this.__enchanceBack();
		this.__enchanceRollout();
		
		for (var i = 0; i < this.items.length; i++)
		{
			var item = this.items[i];
			
			item.addEvent("mouseover", this.__handleItemRollover.bindWithEvent(this, item));
			item.addEvent("mouseout", this.__handleItemRollout.bindWithEvent(this, item));
		}
	},
	
	activateItem: function(item)
	{
		if (this.activePath.indexOf(item) == 0) 
			return;

		this.activePath = item.getElement("span").getParents("li");

		// console.info("activate: " + item.get("class"));
		// console.info(this.activePath);

		for (var i = 0; i < this.items.length; i++)
		{
			if (this.activePath.indexOf(this.items[i]) > -1)
			{
				this.items[i].getElement("span.wrap").addClass("active");

				var nextItem = this.items[i].getNext("li");
				if (nextItem && !nextItem.hasClass("frontpage"))
					nextItem.getElement("span.wrap").addClass("next_to_active");
			}
			else
			{
				this.items[i].getElement("span.wrap").removeClass("active");

				var nextItem = this.items[i].getNext("li");
				if (nextItem && !nextItem.hasClass("frontpage"))
					nextItem.getElement("span.wrap").removeClass("next_to_active");
			}
		}
		
		this.__resizeHomeBanner();
		
		if (this.back)
			this.back.hide();
	},
	
	deactivateAll: function()
	{
		// console.info("deactivate: all");

		var wraps = this.menuElement.getElements("span.wrap");
		
		if (wraps)
		{
			wraps.removeClass("active");
			wraps.removeClass("next_to_active");
		}
		
		this.activePath = [];

		if (this.deactivateTimer)
			clearTimeout(this.deactivateTimer);

		this.__resizeHomeBanner();
		
		if (this.back)
			this.back.show();
	},

	__enchanceRX: function()
	{
		var item = this.menuElement.getElement(".page_5") || this.menuElement.getElement(".page_127");
		
		if (item)
			item.getElement("a").addEvent("click", function(event) { event.stopPropagation(); return false; });
			
		var physicianItem = this.menuElement.getElement(".page_" + Locale.get("Menu.rxPhysicianPageUid"));
		var pharmacistItem = this.menuElement.getElement(".page_" + Locale.get("Menu.rxPharmacistPageUid"));
		var patientItem = this.menuElement.getElement(".page_" + Locale.get("Menu.rxPatientPageUid"));
		
		if (physicianItem)
			physicianItem.getElement("a").grab(new Element("span", {"class": "cta", "text": Locale.get("Menu.rxPhysicianCta")}));
		
		if (pharmacistItem)
			pharmacistItem.getElement("a").grab(new Element("span", {"class": "cta", "text": Locale.get("Menu.rxPharmacistCta")}));
		
		if (patientItem)
			patientItem.getElement("a").grab(new Element("span", {"class": "cta", "text": Locale.get("Menu.rxPatientCta")}));
		
	},
	
	__enchanceBack: function()
	{
		var item = this.menuElement.getElement("li.back");
		
		if (!item)
			return;
		
		var position = item.getPosition(document.getElement("#header"));
		
		this.back = new Element("a", {"class": "back", "href": item.getElement("a").get("href"), "text": Locale.get("Menu.back")});
		this.back.inject(this.menuElement, "after");
		this.back.setPosition({x: position.x, y: 102});
		this.back.setStyle("background-color", item.getStyle("color"));
	},
	
	__enchanceRollout: function()
	{
		var itemsIds = ["page_2", "page_3", "page_4", "page_6", "page_7", "page_183", "page_169", "page_165", "page_120", "page_112"];
		
		for (var i = 0; i < itemsIds.length; i++)
		{
			var item = this.menuElement.getElement("." + itemsIds[i]);
			
			if (!item)
				continue;
			
			new Element("li", {"class": "frontpage"})
				.setStyle("background-color", item.getStyle("color"))
				.grab(new Element("a", {"href": item.getElement("a").get("href"), "text": item.getElement("a").get("text").replace("\r\n", "")}))
				.inject(item.getElement("ul"));
		}
	},
	
	__resizeHomeBanner: function()
	{
		var homeBannerInitialHeight = 418;
		var homeBanner = document.getElement("#c35") || document.getElement("#c163");
		
		if (!homeBanner)
			return;
		
		var dropMenu = this.menuElement.getElement("span.active ul");
		var dropMenuHeight = 0;
		
		if (dropMenu)
			dropMenuHeight = dropMenu.getSize().y - 10;

		if (dropMenuHeight == homeBanner.getStyle("margin-top"))
			return;
		
		homeBanner.setStyles
		({
			"height": homeBannerInitialHeight - dropMenuHeight,
			"margin-top": dropMenuHeight
		});
	},
	
	__handleItemRollover: function(event, item)
	{
		// console.info("over: " + item.get("class"));
		
		event.stopPropagation();
		
		this.activateItem(item)
		
		if (this.deactivateTimer)
			clearTimeout(this.deactivateTimer);
	},
	
	__handleItemRollout: function(event, item)
	{
		// console.info("out: " + item.get("class"));

		if (this.deactivateTimer)
			clearTimeout(this.deactivateTimer);
		
		this.deactivateTimer = this.deactivateAll.delay(300, this);
	}
});

window.addEvent
(
	'domready',
	function()
	{
		var menu = new MenuHeader();
	}
);
