document.write('<style type="text/css">.dd_nav .dd_menu {visibility: hidden; height: 0;}<\/style>');


function initFeatureNav() {
	var sideNav = new FeatureNav();
	sideNav.init();
}

FeatureNav = function() {
	this.oFeatureNavs = $c('dd_nav');
	this.oFeatureNavButtons = $c('dd_button',this.oFeatureNavs);
	this.oCurrHoverButton = false;
	this.oCurrHoverItem = false;
	this.bCorrectHeight = true;
}
FeatureNav.prototype = {
	init: function() {
		for(var i=0, oFeatureNavButton; oFeatureNavButton = this.oFeatureNavButtons[i]; i++) {
			var self = this;

			var oFeatureMenuId = oFeatureNavButton.id.replace('_button','_menu');
			var oFeatureMenu = new HTMLObject($(oFeatureMenuId));
			var oCurrDownItem = new HTMLObject(oFeatureNavButton.parentNode);
			if(oFeatureMenu.getInfo('visibility') == 'visible') {
				this.changeButton(oCurrDownItem, 'menu_toggle');
			}
			if(oFeatureMenu.offsetHeight != 0 && !oCurrDownItem.hasClass('menu_down')) {
				this.changeButton(oCurrDownItem, 'menu_toggle');
				this.bCorrectHeight = false;
			}
		}
		if(this.bCorrectHeight == true) {
			for(var i=0, oFeatureNavButton; oFeatureNavButton = this.oFeatureNavButtons[i]; i++) {
				addEventToObject(oFeatureNavButton,'onclick',function(ev) {self.processClick(ev)});
				addEventToObject(oFeatureNavButton,'onmouseover',function(ev) {self.processHover(ev)});
				addEventToObject(oFeatureNavButton,'onmouseout',function(ev) {self.processOut(ev)});			
			}
		}
	},
	processClick: function(ev) {
		stopDefaultAction(ev);
		var oClickedLink = getClickedLink(ev);
		var oClickedItem = new HTMLObject(oClickedLink.parentNode);
		(this.isEvOnTextLink(ev)) ?	
			document.location.href = oClickedLink.href : 
			this.changeButton(oClickedItem,'menu_toggle');
	},
	processHover: function(ev) {
		this.oCurrHoverButton = new HTMLObject(getClickedLink(ev));
		this.oCurrHoverItem = new HTMLObject(this.oCurrHoverButton.parentNode);
		this.changeButton(this.oCurrHoverItem, (this.isEvOnTextLink(ev)) ? 'hover_left' : 'hover_right');
		var self = this;
		this.oCurrHoverButton.addEvent('onmousemove',function(ev) {self.processMove(ev)})
	},
	processMove: function(ev) {
		(this.isEvOnTextLink(ev)) ?
			this.changeButton(this.oCurrHoverItem, 'hover_left') :
			this.changeButton(this.oCurrHoverItem, 'hover_right');
	},
	processOut: function(ev) {
		this.changeButton(this.oCurrHoverItem, 'mouse_out');
		this.oCurrHoverButton.removeEvent('onmousemove');
	},
	changeButton: function(oItem, sAction) {
		switch(sAction) {
			case 'menu_toggle':
				var oMenuList = new HTMLObject($c('dd_menu',oItem)[0]);
				if(oItem.hasClass('menu_down')) oItem.removeClass('menu_down');
				else if(!oItem.hasClass('menu_down')) oItem.addClass('menu_down');
				if(oItem.hasClass('menu_down') && oMenuList.offsetHeight == 0) {
					oMenuList.style.height = 'auto';
					oMenuList.style.visibility = 'visible';
				} else if(!oItem.hasClass('menu_down') && oMenuList.offsetHeight != 0) {
					oMenuList.style.height = '0';
					oMenuList.style.visibility = 'hidden';
				}
				break;
			case 'hover_left':
				if(oItem.hasClass('hover_right')) oItem.removeClass('hover_right');
				if(!oItem.hasClass('hover_left')) oItem.addClass('hover_left');
				break;
			case 'hover_right':
				if(oItem.hasClass('hover_left')) oItem.removeClass('hover_left');
				if(!oItem.hasClass('hover_right')) oItem.addClass('hover_right');
				break;
			case 'mouse_out':
				if(oItem.hasClass('hover_left')) oItem.removeClass('hover_left');
				if(oItem.hasClass('hover_right')) oItem.removeClass('hover_right');
				break;
			default:
				if(oItem.hasClass('hover_left')) oItem.removeClass('hover_left');
				if(oItem.hasClass('hover_right')) oItem.removeClass('hover_right');
				break;
		}
	},
	isEvOnTextLink: function(ev) {
		var iEvX = Number((window.event) ? (window.event.clientX + document.documentElement.scrollLeft) : ev.pageX);
		var iEvY = Number((window.event) ? (window.event.clientY + document.documentElement.scrollTop) : ev.pageY);
		
		var oButton = this.oCurrHoverButton;
	
		var iLeft = oButton.getLeft();
		var iRight = (iLeft+oButton.offsetWidth)-dd_nav_arrow_width;
		
		return (iLeft < iEvX && iRight > iEvX) ? true : false;
	}
}

addEventToObject(window,'onload',initFeatureNav);
