// ############################################################################
// navutil.js - handles navigation with mootols
// ============================================================================
// CREATED BY:	Zander Waldman -- zwaldman@organic.com
//			Organic Det
//
// CREATED ON: 04/11/07
// ############################################################################
window.onload = function() {
	
	// call intipage to start the flash stuff in the pag
	
	// Boolean to check if user is off active area 
	var rollOutChecker = false;
	var currentMenu;
	var prevMenu;
	
	var bodyID = $$('body');
	var myBodyID = bodyID[0].id;
	var currentPageID = myBodyID.slice(0, -5);
	
	var closeInterval;
	
	var topMenus = new Array();
	var secondaryMenus = new Array();

	
	// ----------------------------------------------------------------
	// loop thorough and create main navigation buttons
	// ----------------------------------------------------------------
	
	// get the navigation list div
	var nav = $('navigation-list');
	
	// get all the elements in it with li
	var navArray = nav.getElements('li');
	
	// loop through and create actions
	for (var i=0; i < navArray.length; i++) {
		
		var myId = navArray[i].id;
		var newId = myId.slice(0, -3);
		
		topMenus.push(newId);

		var btnId = newId + 'Btn';
		var overlayId = newId + 'Overlay';
		var listId = newId + 'List';
		var wrapperId = newId + 'Wrapper';
		
		var overlay = $(overlayId);
		var btn = $(btnId);
		var list = $(listId);
		var wrapper = $(wrapperId);
		var myList = list.getElements('li');
		
		// set the button selected of the page we are on
		if(newId == currentPageID) {
			var myItem = $(btnId).getFirst();
			myItem.addClass('selected');
		}
		
		
		var newPosition = btn.offsetLeft - 10;
		
		if(myList.length > 0) {
		
			btn.setStyles({'cursor':'pointer'});
			overlay.setStyles({'left':newPosition + 'px'});
			wrapper.setStyles({'left':newPosition + 'px'});
			
			//alert(newId);
			
			btn.addEvent('mouseover', function(){
				// show menu home and set checker to false
				//alert(this.id.slice(0, -3));
				showMenu(this.id.slice(0, -3));
				rollOutChecker = false;
			});
			
			btn.addEvent('mouseout', function(){
				rollOutChecker = true;
				menuOut(this.id.slice(0, -3));
			});
			
			wrapper.addEvent('mouseover', function(){
				rollOutChecker = false;
			});
			
			wrapper.addEvent('mouseout', function(){
				rollOutChecker = true;
				menuOut(this.id.slice(0, -7));
			});
		
		}
		
	}
	
	// ----------------------------------------------------------------
	// loop thorough and create main navigation buttons
	// ----------------------------------------------------------------
	
	// get the navigation list div
	var subnav = $('subpage-navigation-list');
	
	if(subnav != "") {
	
		// get all the elements in it with li
		var subNavArray = subnav.getElements('li');
		
		// loop through and create actions
		for (var i=0; i < subNavArray.length; i++) {
			
			var myId = subNavArray[i].id;
			var newId = myId.slice(0, -3);
			
			secondaryMenus.push(newId);
			
			var btnId = newId + 'Btn';
			var overlayId = newId + 'Overlay';
			var listId = newId + 'List';
			var wrapperId = newId + 'Wrapper';
			
			var overlay = $(overlayId);
			var btn = $(btnId);
			var list = $(listId);
			var wrapper = $(wrapperId);
			
			var myList = list.getElements('li');
			
			// set the button selected of the page we are on
			if(newId == currentPage) {
				var myItem = $(btnId).getFirst();
				myItem.addClass('selected');
			}
			
			var newPosition = btn.offsetLeft - 10;
			
			if(myList.length > 0) {
			
				btn.setStyles({'cursor':'pointer'});
				overlay.setStyles({'left':newPosition + 'px'});
				wrapper.setStyles({'left':newPosition + 'px'});
				
				//alert(newId);
				
				btn.addEvent('mouseover', function(){
					// show menu home and set checker to false
					//alert(this.id.slice(0, -3));
					showMenu(this.id.slice(0, -3));
					rollOutChecker = false;
				});
				
				btn.addEvent('mouseout', function(){
					rollOutChecker = true;
					menuOut(this.id.slice(0, -3));
				});
				
				wrapper.addEvent('mouseover', function(){
					rollOutChecker = false;
				});
				
				wrapper.addEvent('mouseout', function(){
					rollOutChecker = true;
					menuOut(this.id.slice(0, -7));
				});
			
			}
			
		}
	}
	// ---------------------------------------------
	// Called when user rolls out of an area
	// ---------------------------------------------
	function menuOut(menuId) {
		// set checker to true
		rollOutChecker = true;
		// create an interval to call wether user is over the drop menu or not
		setTimeout(isOverMenu,100, menuId);
	}
	
	// ---------------------------------------------
	// Called from interval check wether to collapse
	// ---------------------------------------------
	function isOverMenu(menuId) {
		if(rollOutChecker == true) {
			hideMenu(menuId);
			currentMenu = null;
			rollOutChecker = false;
		}
	}
	
	// ---------------------------------------------
	// showMenu() - method to show desired menu
	// ---------------------------------------------
	function showMenu(whichMenu){
			
			//closeInterval = setInterval(hideMenus, 10);
			
			var btn = $(whichMenu + 'Btn')
			var list = $(whichMenu + 'List');
			var wrapper = $(whichMenu + 'Wrapper');
			var overlay = $(whichMenu + 'Overlay');
			var menuHeight = list.getSize().scrollSize.y;
			
			if(list.getStyle('height').toInt() == 0) {
				var toggle = new Fx.Style(list, 'height',{duration: 200, transition:Fx.Transitions.linear});
				var toggle2 = new Fx.Style(overlay, 'height', {duration: 200, transition:Fx.Transitions.linear});
				toggle.start(menuHeight);
				toggle2.start(menuHeight);
			}
			wrapper.setStyles({'border-bottom':'solid 5px #e8880a'});
			
			currentMenu = whichMenu;
			hideMenus();
			
			
		
	}
	
	// ---------------------------------------------
	// showMenu() - method to hide desired menu
	// ---------------------------------------------
	function hideMenu(whichMenu){
			
			if(whichMenu != currentMenu) {
				if(whichMenu != undefined) {
					var btn = $(whichMenu + 'Btn')
					var list = $(whichMenu + 'List');
					var wrapper = $(whichMenu + 'Wrapper');
					var overlay = $(whichMenu + 'Overlay');
					//var menuHeight = list.getSize().scrollSize.y;
					//var toggle = new Fx.Style(list, 'height',{duration: 300});
					//var toggle2 = new Fx.Style(overlay, 'height',{duration: 300});
					//toggle.set(0);
					//toggle2.set(0);
					list.setStyles({'height':'0px'});
					overlay.setStyles({'height':'0px'});
					wrapper.setStyles({'border-bottom':'none'});
				}
			}
	}
	
	// ---------------------------------------------
	// hideMenus() - method to hide all menus
	// ---------------------------------------------
	function hideMenus() {
		
		setTimeout(hideMenus,1000);
		
		for(var i=0; i<topMenus.length; i++) {
		
			if(topMenus[i] != currentMenu) {
				hideMenu(topMenus[i]);	
			}
		
		}
		
		for(var i=0; i<secondaryMenus.length; i++) {
		
			if(secondaryMenus[i] != currentMenu) {
				hideMenu(secondaryMenus[i]);	
			}
		
		}
		
	}
	
	intPage();
	
	for (var i = 0; i < window_onload.length; i++) {
		eval(window_onload[i]);
	}
	
}

var window_onload = new Array;
function onload_register(func) {
	window_onload.push(func);
}
