YAHOO.namespace('ici');

YAHOO.ici.globalNav = function() {
	
	var D = YAHOO.util.Dom;
	var E = YAHOO.util.Event;
	var _firstCol = null;
	var _secondCol = null;
	var _thirdCol = null;
	var _showRollOvers = true;
	
	var _init = function() {
		
		// nav cols
		_firstCol	= D.get('g-nav-fir');
		_secondCol	= D.get('g-nav-sec');
		_thirdCol	= D.get('g-nav-thi');
		
		// setup nav state
		var elements = YAHOO.util.Selector.query('body');
		var bodyId = D.generateId(elements[0], 'body');
		var bd = D.get(bodyId);
		
		// show second column?
		if (D.hasClass(bd, 'exh')) {
			_showSecondaryMenu(D.get('g-nav-ex'), 'g-nav-exh');
			_showRollOvers = false;
		} else if (D.hasClass(bd, 'evt')) {
			_showSecondaryMenu(D.get('g-nav-ev'), 'g-nav-evt');
			_showRollOvers = false;
		} else if (D.hasClass(bd, 'net')) {
			_showSecondaryMenu(D.get('g-nav-ne'), 'g-nav-net');
			_showRollOvers = false;
		} else if (D.hasClass(bd, 'sho')) {
			_showSecondaryMenu(D.get('g-nav-sh'), 'g-nav-sho');
			_showRollOvers = false;
		} else if (D.hasClass(bd, 'inf')) {
			_showSecondaryMenu(D.get('g-nav-in'), 'g-nav-inf');
			_showRollOvers = false;
		}
		
		// highlight what item?
		if (D.hasClass(bd, 'exh-all')) {
			D.addClass('g-nav-exh-all', 'selected');
		} else if (D.hasClass(bd, 'cat-19') || D.hasClass(bd, 'exh-present')) {
			D.addClass('g-nav-exh-touring', 'selected');
		} else if (D.hasClass(bd, 'cat-21') || D.hasClass(bd, 'exh-future')) {
			D.addClass('g-nav-exh-project35', 'selected');
		} else if (D.hasClass(bd, 'cat-22') || D.hasClass(bd, 'exh-past')) {
			D.addClass('g-nav-exh-exhibitsbox', 'selected');
		} else if (D.hasClass(bd, 'evt-all')) {
			D.addClass('g-nav-events-all', 'selected');
		} else if (D.hasClass(bd, 'evt-dis')) {
			D.addClass('g-nav-events-dispatch', 'selected');
		} else if (D.hasClass(bd, 'cat-6')) {
			D.addClass('g-nav-events-curatorsper', 'selected');
		} else if (D.hasClass(bd, 'cat-11')) {
			D.addClass('g-nav-events-onthemove', 'selected');
		} else if (D.hasClass(bd, 'cat-12')) {
			D.addClass('g-nav-events-letstalk', 'selected');
		} else if (D.hasClass(bd, 'cat-14')) {
			D.addClass('g-nav-events-nystudio', 'selected');
} else if (D.hasClass(bd, 'cat-23')) {
			D.addClass('g-nav-events-vidprof', 'selected');
		} else if (D.hasClass(bd, 'net-all')) {
			D.addClass('g-nav-network-all', 'selected');
		


} else if (D.hasClass(bd, 'net-join')) {
			D.addClass('g-nav-network-join', 'selected');
} else if (D.hasClass(bd, 'net-cur')) {
			D.addClass('g-nav-network-curatorsnet', 'selected');
} else if (D.hasClass(bd, 'net-art')) {
			D.addClass('g-nav-network-artist-archive', 'selected');
} else if (D.hasClass(bd, 'net-ven')) {
			D.addClass('g-nav-exhib-archive', 'selected');
} else if (D.hasClass(bd, 'net-curarc')) {
			D.addClass('g-nav-network-curator-archive', 'selected');
		} else if (D.hasClass(bd, 'sho-all')) {
			D.addClass('g-nav-shop-all', 'selected');

} else if (D.hasClass(bd, 'sho-ed')) {
			D.addClass('g-nav-shop-editions', 'selected');
} else if (D.hasClass(bd, 'sho-pub')) {
			D.addClass('g-nav-shop-publications', 'selected');

} else if (D.hasClass(bd, 'inf-all')) {
			D.addClass('g-nav-info-all', 'selected');
} else if (D.hasClass(bd, 'inf-jobs')) {
			D.addClass('g-nav-info-jobs', 'selected');
} else if (D.hasClass(bd, 'inf-staff')) {
			D.addClass('g-nav-info-staffcontact', 'selected');
} else if (D.hasClass(bd, 'inf-fund')) {
			D.addClass('g-nav-info-funders', 'selected');
} else if (D.hasClass(bd, 'inf-faq')) {
			D.addClass('g-nav-info-faq', 'selected');
		}
			
		if (D.hasClass(bd, 'home')) {_showLogo('inf');}
		
	};
	
	var _hide = function(el) {
		return D.addClass(el, 'hidden');
	};
	
	var _show = function(el) {
		return D.removeClass(el, 'hidden');
	};
	
	var _deselect = function(el) {
		return D.removeClass(el, 'selected');
	};
	
	var _showSecondaryMenu = function(a, menuId) {
		
		// clear fist col selected
		var primItems = D.getElementsBy(function(){return true}, 'a', _firstCol, _deselect);
		
		// select current
		D.addClass(a, 'selected');
		
		// hide all second col menus
		var menuItems = D.getElementsByClassName('menu', 'div', _secondCol, _hide);
		
		// show current col menu
		D.removeClass(D.get(menuId), 'hidden');
		
		_hideTertiaryMenu();
		
		// show column container
		D.removeClass(_secondCol, 'hidden');
		
	};
	
	var _showLogo = function(menuId) {
	
	   // show logo color
	   D.getElementsByClassName('logo', 'div', D.get('g-nav-logos'), _hide);
	
	   switch (menuId) {
		   case 'exh':
			 D.removeClass('g-logo-aqua', 'hidden');
			 break;
		   case 'evt':
			 D.removeClass('g-logo-blue', 'hidden');
			 break;
		   case 'net':
			 D.removeClass('g-logo-green', 'hidden');
			 break;
		   case 'sho':
			 D.removeClass('g-logo-orange', 'hidden');
			 break;
		case 'inf':
			 D.removeClass('g-logo-pink', 'hidden');
			 break;
                case 'home':
			 D.removeClass('g-logo-black', 'hidden');
			 break;
            }
	
	};

	var _showTertiaryMenu = function(a, menuId) {
		
		if (_showRollOvers) {

             D.addClass(D.get('g-nav-logos'), 'hidden');
			
			// clear second col selected
			var primItems = D.getElementsBy(function(){return true}, 'a', _secondCol, _deselect);
			
			// select current
			D.addClass(a, 'selected');
		
			// hide all column menus
			var menuItems = D.getElementsByClassName('menu', 'div', _thirdCol, _hide);
			
			// show current menu
			D.removeClass(D.get(menuId), 'hidden');
			
			// show column container
			D.removeClass(_thirdCol, 'hidden');
			
		}
		
	};

    var _hideTertiaryMenu = function() {

            // clear second col selected
		var primItems = D.getElementsBy(function(){return true}, 'a', _secondCol, _deselect);

            // hide third col
		_hide(_thirdCol);
        D.removeClass(D.get('g-nav-logos'), 'hidden');
		
   };

  var _highlightContentItems = function(contentId) {

          _showLogo(contentId);
          D.getElementsByClassName(contentId, 'a', 'bd', _setHighlightColor, {className: contentId + 'Highlight'});

		  if (contentId == 'inf') {
			  D.getElementsByClassName('news', null, 'bd', _setHighlightColor, {className: contentId + 'Highlight'});
			  D.getElementsBy(function(){return true}, 'a', 'news-box', _setHighlightColor, {className: contentId + 'Highlight'});
		  }
  };

  var _restoreContentItems = function(contentId) {
        _showLogo('home');
       D.getElementsByClassName(contentId, 'a', 'bd', _removeHighlightColor, {className: contentId + 'Highlight'});
	    if (contentId == 'inf') {
		  D.getElementsByClassName('news', null, 'bd', _removeHighlightColor, {className: contentId + 'Highlight'});
		  D.getElementsBy(function(){return true}, 'a', 'news-box', _removeHighlightColor, {className: contentId + 'Highlight'});
	  }
  };

 var _setHighlightColor = function(e, obj) {
        D.addClass(e, obj.className);
  };

  var _removeHighlightColor = function(e, obj) {
      D.removeClass(e, obj.className);
  };
	
	YAHOO.util.Event.onDOMReady(_init);
	
	return {
			showSecondaryMenu:	_showSecondaryMenu,
			showTertiaryMenu:	_showTertiaryMenu,
			hideTertiaryMenu:      _hideTertiaryMenu,
			show:				_show,
			hide:				_hide,
			highlightContentItems: _highlightContentItems,
			restoreContentItems: _restoreContentItems
	};
	
}();