Interface.Navigation = Class.create({
	initialize: function(activeItem) {
		mainnav 	= $$('#nav ul li.main');
		secondnav 	= $$('#nav ul li.second');
		
		gloNav			= this;
		gloActiveItem 	= activeItem;
		gloCloseMain	= new Array(mainnav.length);
		gloCloseSecond	= new Array(secondnav.length);
		gloOpenMain		= null;
		gloOpenSecond	= null;
		
		var i = 0;
		mainnav.each(function(main) {
			main.index = i;
			main.style.cursor = 'pointer';
			main.observe('mouseover', gloNav.open.bind(main));
			main.observe('mouseout', gloNav.close.bind(main));
			
			main.secondlist		= main.down('ul');
			main.seconditems	= main.getElementsByClassName('second');
			i++;
		});
		
		var s = 0;
		secondnav.each(function(second) {
			second.index = s;
			second.style.cursor = 'pointer';
			second.observe('mouseover', gloNav.open.bind(second));
			second.observe('mouseout', gloNav.close.bind(second));
			s++;
		});
		
		mainnav[gloActiveItem].addClassName('open');
		mainnav[gloActiveItem].down('ul').addClassName('open');
	},
	
	
	
	
	open: function() {
		isRunning = true;
		if(this.hasClassName('main')) {
			var main = this;
			//gloNav.closeAll('main',main.index);
			
			gloNav.closeStandard(main.index);
			window.clearTimeout(gloCloseMain[main.index]);
			gloCloseMain[main.index] = null;
			
			//main.addClassName('open');
			window.clearTimeout(gloOpenMain);
			gloOpenMain = window.setTimeout(function() { main.addClassName('open'); main.down('ul').addClassName('open'); }, 300);
			
		} else if(this.hasClassName('second')) {
			var second = this;
			
			window.clearTimeout(gloCloseSecond[second.index]);
			gloNav.closeAll('second',second.index);
				
			second.addClassName('open');
			
			thirdsLI = $$('#nav ul li.open ul.open li.second.open ul li a');
			largest = 0;
			thirdsLI.each(function(thirdLI) {
				if(largest<thirdLI.getWidth()) largest = thirdLI.getWidth();
			});
				
			thirdsUL = $$('#nav ul li.open ul.open li.second.open ul');
			thirdsUL.each(function(thirdUL){
				thirdUL.style.width = largest+'px';
			});
			
			/*window.clearTimeout(gloOpenSecond);
			gloOpenSecond = window.setTimeout(function() { second.down('ul').addClassName('open'); }, 200);*/
		}
	},
	
	close: function() {
		isRunning = false;
		if(this.hasClassName('main')) {
			var main = this;
			gloCloseMain[main.index] = window.setTimeout(function() { main.removeClassName('open'); main.down('ul').removeClassName('open'); gloNav.openStandard(); }, 250);
		} else if(this.hasClassName('second')) {
			var second = this;
			gloCloseSecond[second.index] = window.setTimeout(function() { 
				second.removeClassName('open'); 
				if(second.down('ul')){
					second.down('ul').removeClassName('open'); 
				}
				gloNav.openStandard(); 
			}, 250);
		}
	},
	
	closeAll: function(Class, Index) {
		if(Class=='main') {
			var items = mainnav;
		} else {
			var items = secondnav;
		}
		
		items.each(function(item) {
			if(item.index != Index) {
				item.removeClassName('open');
				if(item.down('ul')){
					item.down('ul').removeClassName('open');
				}
			}
		});
	},
	
	openStandard: function() {
		openItem = $('nav').down('ul.open');
		
		if(typeof(openItem) == 'undefined' && !isRunning) {
			window.clearTimeout(gloOpenMain);
			gloNav.closeAll('main',gloActiveItem);
			mainnav[gloActiveItem].addClassName('open');
			mainnav[gloActiveItem].down('ul').addClassName('open');
		}
	},
	
	closeStandard: function(Index) {
		if(Index != (gloActiveItem)) {
			gloCloseMain[gloActiveItem] = window.setTimeout(function() { 
				mainnav[gloActiveItem].removeClassName('open');
				mainnav[gloActiveItem].down('ul').removeClassName('open');
			 }, 250);
		}
	}
});

