/*
@ Author : Remon de Boer
@ Company: Techtribe
@ E-mail : Remon@techtribe.nl
*/

var HealthDirect =
{
	init: function() {
		Techtribe.TransparantFix.init();
		this.Navigation.init();
	}
}


//HealthDirect Navigation Flash & DHTML
HealthDirect.Navigation =
{
	init: function() {
		this.MenuStructure.init();
		var flashNavigation = false;//this.FlashNavigation.init();
		if(!flashNavigation){
			this.DHTMLNavigation.init();
		}
	},

	FlashNavigation:
	{
		init: function() {
			return this.writeFlashNav();
		},

		writeFlashNav: function() {
			var navigation = new SWFObject("/static/project/swf/Navigation.swf", "flash_movie", "100%", "100%", 8, true);
			navigation.addParam("wmode", "transparent");
			navigation.addParam("allowScriptAccess", "always");
			navigation.setAttribute("allowScriptAccess", "always");
			var flashWriter = navigation.write("menuContainer");
			if(!flashWriter){
				return false;
			}
			return true;
		}
	},

	DHTMLNavigation:
	{
		MAIN_MENU_PADDING: 50,
		SUB_MENU_PADDING: 25,
		menuBgColor: null,
		subMenuColor: null,
		mainNavContainer: null,
		mainButBgContainer: null,
		mainButBg: null,
		viewingMenuId: null,
		selectedMenuId: null,
		navArr: null,
		timer: null,
		navObj: new Object(),

		init: function() {
			this.navObj = HealthDirect.Navigation.MenuStructure.DHTMLMenuStructure.getNavObj();
			this.navArr = this.navObj.navArr;
			this.menuBgColor = this.navObj.menuBgColor;
			this.subMenuColor = this.navObj.subMenuColor;
			this.mainNavContainer = this.navObj.mainNavContainer;
			this.mainButBgContainer = document.getElementById("mainButBgContainer");
			this.mainButBgContainer.style.left = "0px";
			this.mainButBg = document.getElementById("mainButBg");
			var selectedItem = this.alignMainMenu();
			this.run(selectedItem);
		},

		alignMainMenu: function() {
			var lastMainMenuItem;
			var selectedItem = -1;
			this.selectedMenuId = -1;
			for(var i=0;i<this.navArr.length;i++)
			{
				this.navArr[i].el.style.margin = "0px";
				this.navArr[i].el.style.float = "none";
				this.navArr[i].el.style.position = "absolute";
				this.navArr[i].el.style.top = "12px";
				this.navArr[i].el.style.left = "0px";
				this.navArr[i].el.style.zIndex = 10;
				if(lastMainMenuItem) {
					this.navArr[i].el.style.left = ((Techtribe.Utils.stripValuePx(lastMainMenuItem.style.left) + lastMainMenuItem.offsetWidth) + this.MAIN_MENU_PADDING) + "px";
					lastMainMenuItem = this.navArr[i].el;
				} else {
					this.navArr[i].el.style.left = 25 + "px";
					lastMainMenuItem = this.navArr[i].el;
				}
				if(this.navArr[i].subNav != null){
					this.alignSubMenu(this.navArr[i].subNavContainer, this.navArr[i].id, this.navArr[i].el, this.navArr[i].subNav);
				}
				if(this.navArr[i].selected){
					selectedItem = i;
					this.selectedMenuId = i;
				}
				this.setMainItemEvents(this.navArr[i]);
			}
			return selectedItem;
		},

		setMainItemEvents: function(mainNavItemObj) {
			var el = new YAHOO.util.Element(mainNavItemObj.el);
			el.on('mouseover', this.mainMenuRollOver, {navObj: this, id: mainNavItemObj.id});
			el.on('mouseout', this.mainMenuRollOut, {navObj: this, id: mainNavItemObj.id});
		},

		alignSubMenu: function(subNavCon, parentId, parentEl, subNav) {
			subNavCon.style.display = "block";
			var mainNavCon = this.mainNavContainer;
			var absoluteMiddle = Techtribe.Utils.stripValuePx(parentEl.style.left) + (parentEl.offsetWidth / 2);
			var centreSubMenu = absoluteMiddle - ((subNavCon.offsetWidth - 25) / 2);
			if(centreSubMenu < 10){
				centreSubMenu = 10;
			} else if((centreSubMenu + subNavCon.offsetWidth) > this.mainNavContainer.offsetWidth){
				centreSubMenu = mainNavCon.offsetWidth - (subNavCon.offsetWidth + 10);
			}
			subNavCon.style.left = centreSubMenu + "px";
			subNavCon.style.display = "none";
			for(var i=0;i<subNav.length;i++)
			{
				if(subNav[i].selected){
					subNav[i].label.style.color = this.navObj.subMenuColor;
				}
			}
			this.setSubMenuEvents(subNavCon, parentId, subNav);
		},

		setSubMenuEvents: function(subNavCon, parentId, subMenuItems) {
			var containerEl = new YAHOO.util.Element(subNavCon);
			containerEl.on('mouseover', this.subMenuContainerRollOver, {navObj: this, parentId: parentId});
			containerEl.on('mouseout', this.subMenuContainerRollOut, {navObj: this, parentId: parentId});
			for(var i=0;i<subMenuItems.length;i++)
			{
				var el = new YAHOO.util.Element(subMenuItems[i].el);
				el.on('mouseover', this.subMenuRollOver, {navObj: this, subMenuItem: subMenuItems[i]});
				el.on('mouseout', this.subMenuRollOut, {navObj: this, subMenuItem: subMenuItems[i]});
			}
		},

		run: function(selectedItem) {
			this.mainButBgContainer.style.display = "block";
			this.mainButBgContainer.style.left = "0px";
			if(selectedItem == -1){
				Techtribe.Utils.setOpacity(this.mainButBgContainer, 0);
			}
			this.setNewViewingId(selectedItem);
		},

		mainMenuRollOver: function(evtObj, obj) {
			obj.navObj.clearTimer();
			obj.navObj.setNewViewingId(obj.id);
		},

		mainMenuRollOut: function(evtObj, obj) {
			obj.navObj.clearTimer();
			obj.navObj.setTimer();
		},

		subMenuContainerRollOver: function(evtObj, obj) {
			obj.navObj.clearTimer();
			obj.navObj.setNewViewingId(obj.parentId);
		},

		subMenuContainerRollOut: function(evtObj, obj) {
			obj.navObj.clearTimer();
			obj.navObj.setTimer();
		},

		subMenuRollOver: function(evtObj, obj) {
			if(!obj.subMenuItem.selected){
				obj.subMenuItem.label.style.color = obj.navObj.navObj.subMenuColor;
			}
		},

		subMenuRollOut: function(evtObj, obj) {
			if(!obj.subMenuItem.selected){
				obj.subMenuItem.label.style.color = "#000000";
			}
		},

		setNewMenuItem: function(id) {
			this.navArr[id].label.style.color = "#000000";
			var left = (Techtribe.Utils.stripValuePx(this.navArr[id].el.style.left) - Techtribe.Utils.stripValuePx(this.mainButBgContainer.style.left)) - 10;
			var width = this.navArr[id].el.offsetWidth;
			this.mainButBgContainer.style.left = left + "px";
			this.mainButBg.style.width = width + "px";
		},

		gotoNewMenuItem: function(oldId, id) {
			if(oldId > -1 && oldId != null){
				this.navArr[oldId].label.style.color = "#FFFFFF";
			}
			this.navArr[id].label.style.color = "#000000";
			var left = (Techtribe.Utils.stripValuePx(this.navArr[id].el.style.left) - Techtribe.Utils.stripValuePx(this.mainButBgContainer.style.left)) - 10;
			var width = this.navArr[id].el.offsetWidth;
			var size = new YAHOO.util.Anim(this.mainButBg, {width: {to: width}}, 0.7, Techtribe.Easing.expoEaseOut);
			var move = new YAHOO.util.Motion(this.mainButBgContainer, {points: {by: [left, 0]}});
			var opacity = Techtribe.Utils.getOpacity(this.mainButBgContainer)
			if(opacity < 100 && opacity != null){
				var opacityTween = new YAHOO.util.Anim(this.mainButBgContainer, {opacity: {to: 100}}, 0.7, Techtribe.Easing.expoEaseOut);
			}
			move.duration = 0.7;
			move.method = Techtribe.Easing.expoEaseOut;
			size.animate();
		    move.animate();
		    if(opacityTween){
		    	opacityTween.animate();
		    }
		},

		fadeOut: function(oldId) {
			if(oldId != null){
				this.navArr[oldId].label.style.color = "#FFFFFF";
			}
			var opacity = new YAHOO.util.Anim(this.mainButBgContainer, {opacity: {to: 0}, points: {by: [0, 0]}}, 0.5, Techtribe.Easing.expoEaseOut);
			var move = new YAHOO.util.Motion(this.mainButBgContainer, {points: {by: [-(Techtribe.Utils.stripValuePx(this.mainButBgContainer.style.left)), 0]}});
			opacity.animate();
			move.animate();
		},

		setTimer: function() {
			var navObj = this;
			var id = this.selectedMenuId;
			this.timer = window.setTimeout(function(){navObj.setNewViewingId(id);}, 500);
		},

		clearTimer: function() {
			this.timer = clearTimeout(this.timer);
		},

		setNewViewingId: function(id) {
			var oldId = this.viewingMenuId;
			if(oldId != id){
				this.viewingMenuId = id;
				this.stateChanged(oldId, this.viewingMenuId);
			}
		},

		stateChanged: function(oldId, newId) {
			if(newId > -1){
				if(oldId != null){
					this.gotoNewMenuItem(oldId, newId);
				} else {
					this.setNewMenuItem(newId);
				}
				if(this.navArr[newId].subNavContainer){
					this.navArr[newId].subNavContainer.style.display = "block";
				}
			} else {
				this.fadeOut(oldId);
			}
			if(oldId > -1 && oldId != null){
				if(this.navArr[oldId].subNavContainer){
					this.navArr[oldId].subNavContainer.style.display = "none";
				}
			}
		}
	},

	MenuStructure:
	{
		init: function() {
			var mainMenuColor = this.getMainMenuColor();
			var subMenuColor = mainMenuColor;//this.getSubMenuColor();
			//this.FlashMenuStructure.init(mainMenuColor, subMenuColor);
			this.DHTMLMenuStructure.init(mainMenuColor, subMenuColor);
		},

		getMainMenuColor: function() {
			var el = new YAHOO.util.Element("mainMenuContainer");
			var color = el.getStyle("backgroundColor");
			if(color.substring(0, 3).toLowerCase() == "rgb") {
				var color = Techtribe.Utils.rgbConvert(color);
			}
			return color;
		},

		getSubMenuColor: function() {
			var el = new YAHOO.util.Element("sectionId");
			var color = el.getStyle("backgroundColor");
			if(color.substring(0, 3).toLowerCase() == "rgb") {
				var color = Techtribe.Utils.rgbConvert(color);
			}
			return color;
		},

		FlashMenuStructure:
		{
			menuBgColor: null,
			subMenuColor: null,
			mainNavContainer: null,
			navObj: new Object(),

			init: function(menuBgColor, subMenuColor) {
				this.menuBgColor = menuBgColor.replace("#", "0x");
				this.subMenuColor = subMenuColor.replace("#", "0x");
				this.mainNavContainer = document.getElementById("mainMenuContainer");
				this.navObj = this.createNavObj();
			},

			getNavObj: function() {
				return this.navObj;
			},

			createNavObj: function() {
				var navObj = new Object();
				navObj.menuBgColor = this.menuBgColor;
				navObj.subMenuColor = this.subMenuColor;
				navObj.navArr = new Array();
				var mainNavLinks = this.mainNavContainer.getElementsByTagName("a");
				for(var i=0;i<mainNavLinks.length;i++)
				{
					var mainNavItem = this.createMainNavObj(mainNavLinks[i], i);
					navObj.navArr.push(mainNavItem);
				}
				return navObj;
			},

			createMainNavObj: function(el, id) {
				var mainNavItem = new Object();
				mainNavItem.id = id;
				mainNavItem.selected = (el.className == "selected") ? true : false;
				mainNavItem.name = el.childNodes[0].nodeValue;
				mainNavItem.url = el.href;
				mainNavItem.subNav = this.createSubNavArr(id);
				return mainNavItem;
			},

			createSubNavArr: function(parentId) {
				var subNavArr = new Array();
				var subNavContainer = document.getElementById("subMenu" + parentId);
				if(subNavContainer){
					var subNavLinks = subNavContainer.getElementsByTagName("a");
					for(var i=0;i<subNavLinks.length;i++)
					{
						var subNavItem = this.createSubNavObj(subNavLinks[i], parentId, i);
						subNavArr.push(subNavItem);
					}
					return subNavArr;
				}
				return null;
			},

			createSubNavObj: function(el, parentId, id) {
				var subNavItem = new Object();
				subNavItem.parentId = parentId;
				subNavItem.id = id;
				subNavItem.selected = (el.className == "selected") ? true : false;
				subNavItem.name = el.childNodes[0].nodeValue;
				subNavItem.url = el.href;
				return subNavItem;
			}
		},

		DHTMLMenuStructure:
		{
			menuBgColor: null,
			subMenuColor: null,
			mainNavContainer: null,
			navObj: new Object(),

			init: function(menuBgColor, subMenuColor) {
				this.menuBgColor = menuBgColor;
				this.subMenuColor = subMenuColor;
				this.mainNavContainer = new YAHOO.util.Element("mainMenuContainer");
				this.navObj = this.createNavObj();
			},

			getNavObj: function() {
				return this.navObj;
			},

			createNavObj: function() {
				var navObj = new Object();
				navObj.menuBgColor = this.menuBgColor;
				navObj.subMenuColor = this.subMenuColor;
				navObj.mainNavContainer = this.mainNavContainer;
				navObj.navArr = new Array();
				var mainNavLinks = this.mainNavContainer.getElementsByClassName("mainMenuItem", "div");
				for(var i=0;i<mainNavLinks.length;i++)
				{
					var mainNavItem = this.createMainNavObj(mainNavLinks[i], i);
					navObj.navArr.push(mainNavItem);
				}
				return navObj;
			},

			createMainNavObj: function(el, id) {
				var mainNavItem = new Object();
				mainNavItem.el = el;
				mainNavItem.label = el.childNodes[0];
				mainNavItem.id = id;
				mainNavItem.selected = (mainNavItem.label.className == "selected") ? true : false;
				mainNavItem.subNavContainer = document.getElementById("subMenu" + id);
				mainNavItem.subNav = (mainNavItem.subNavContainer) ? this.createSubNavArr(new YAHOO.util.Element(mainNavItem.subNavContainer), id) : null;
				return mainNavItem;
			},

			createSubNavArr: function(subNavContainer, parentId) {
				var subNavArr = new Array();
				if(subNavContainer){
					var subNavLinks = subNavContainer.getElementsByClassName("subMenuItem", "div");
					for(var i=0;i<subNavLinks.length;i++)
					{
						var subNavItem = this.createSubNavObj(subNavLinks[i], parentId, i);
						subNavArr.push(subNavItem);
					}
					return subNavArr;
				}
				return null;
			},

			createSubNavObj: function(el, parentId, id) {
				var subNavItem = new Object();
				subNavItem.el = el;
				subNavItem.label = el.childNodes[0];
				subNavItem.parentId = parentId;
				subNavItem.id = id;
				subNavItem.selected = (subNavItem.label.className == "selected") ? true : false;
				return subNavItem;
			}
		}
	}
}