var Navigation = new Class({
	
	initialize: function(id){
		this._navigationDiv = $(id);
		this._animationSpeed = 500;
		
		this._setMouseEvents();
	},

	_setMouseEvents: function(){
		if($$('.showNavigation').length != 1){
			$('header').addEvent('mouseenter', this.showMainNav.bind(this));
			$('header').addEvent('mouseleave', this.hideMainNav.bind(this));
		}
		navigationUl = this._navigationDiv.getChildren('ul')[0];
		navigationLi = navigationUl.getChildren('li');
		num_listElements = navigationLi.length;
		for(var i=0;i<num_listElements;i++){
			listEntry = navigationLi[i];
			listEntry.addEvent('click', this.changePage.bind(this, listEntry));
		}
	},
	
	changePage: function(clickedElement){
		var anchor = clickedElement.getChildren('a')[0];
		anchor.removeEvents('mouseleave');
		navigationUl = this._navigationDiv.getChildren('ul')[0];
		navigationLi = navigationUl.getChildren('li');
		num_listElements = navigationLi.length;
		$('subNavigation').get('morph').start({'opacity': 0});
		for(var i=0;i<num_listElements;i++){
			listEntry = navigationLi[i];
			if(clickedElement.id != listEntry.id){
				listEntry.get('morph').start({'opacity': 0}).chain(function(){
					this.start({'width': 0, 'padding-right': 0});
				}).chain(function(){
					anchor = clickedElement.getChildren('a')[0];
					window.location.href = anchor.href;
				});
			}
		}
		return false;
	},
	
	showMainNav: function(){
		clearTimeout(this._hideTimer);
		navigationUl = this._navigationDiv.getChildren('ul')[0];
		navigationLi = navigationUl.getChildren('li');
		num_listElements = navigationLi.length;
		for(var i=0;i<num_listElements;i++){
			listEntry = navigationLi[i];
			if(!(listEntry.style.width > 0)){
				anchor = listEntry.getChildren('a')[0];
				listEntry.get('morph').start({'width': anchor.offsetWidth, 'padding-right': 15}).chain(function(){
					this.start({'opacity': 1});
				});
			}
		}	
	},
	
	hideMainNav: function(){
		navigationUl = this._navigationDiv.getChildren('ul')[0];
		navigationLi = navigationUl.getChildren('li');
		num_listElements = navigationLi.length;
		var fx = function(){
			for(var i=0;i<num_listElements;i++){
				listEntry = navigationLi[i];
				if(!(listEntry.className.indexOf('rex-current') > -1) && !(listEntry.className.indexOf('rex-active') > -1)){
					listEntry.get('morph').start({'opacity': 0}).chain(function(){
						this.start({'width': 0, 'padding-right': 0});
					});
				}
			}
		}
		this._hideTimer = fx.delay(2000);
	}
});
