// JavaScript Document
//SET GLOBALS
var canvaswidth = 970;
var subnavwidth = '160px';
var timer = 200;
var wheretostartleftalign = 5;
var effectDuration = .1;
var thirdlevelduration = .12;
var topoffsetID = 'header_wrapper';

//NAVIGATION HOLDER
var MainNav = new Array();
		
function initNavEvents()
{
	//init ids
	var mainnav = null;
	var subnav = null;
	for(var a=0; a<MainNav.length; a++)
	{
		MainNav[a].submenu.style.width = subnavwidth;
	}

	//init main nav events
	for(var a=0; a<MainNav.length; a++)
	{				  
		function showsub(event, obj) 
		{    
			clearTimeout(obj.outtimer);
			clearTimeout(obj.subnavtimer);
			obj.overtimer = setTimeout(function () {
					obj.parentItem.className = 'main_nav_wrapperOn';
					if(obj.submenu.style.display != 'block')
					{
						new Effect.BlindDown(obj.submenu, 
						{
							duration: effectDuration,
							beforeStart: function ()
							{
								obj.submenu.style.visibility = 'visible';
								obj.submenu.style.display = 'none'; 
								obj.parentItem.className = 'main_nav_wrapperOn';
								obj.submenu.style.zIndex= '100'; 
							},
							afterFinish: function ()
							{
								obj.submenu.style.visibility = 'visible';
								obj.submenu.style.display = 'block'; 
							}
						});
					}
			}, timer);
			   
		} 
		MainNav[a].parentItem.observe('mouseover', showsub.bindAsEventListener(this, MainNav[a]));   
		
		function hidesub(event, obj) 
		{    
			clearTimeout(obj.overtimer);
			obj.parentItem.className = '';
			obj.outtimer = setTimeout(function () {
					if(obj.submenu.style.display != 'none')
					{
						new Effect.BlindUp(obj.submenu, 
						{
							duration:effectDuration,
							beforeStart: function ()
							{
								
								obj.submenu.style.zIndex= '0'; 
							},
							afterFinish: function ()
							{
								obj.submenu.style.visibility = 'hidden';
								obj.submenu.style.display = 'none'; 
							}
						});
					}
			}, timer);
		} 
		MainNav[a].parentItem.observe('mouseout', hidesub.bindAsEventListener(this, MainNav[a]));  
	}
	
	//init submenu events
	for(var a=0; a<MainNav.length; a++)
	{
		if(MainNav[a].submenu)
		{
			function showsubmenu(event, obj) 
			{    
				obj.parentItem.className = 'main_nav_wrapperOn';
				obj.submenu.style.visibility = 'visible';
				obj.submenu.style.display = 'block';   
				clearTimeout(obj.subnavtimer);
				clearTimeout(obj.outtimer);
			} 
			MainNav[a].submenu.observe('mouseover', showsubmenu.bindAsEventListener(this, MainNav[a]));   
			
			function hidesubmenu(event, obj) 
			{   
				obj.subnavtimer = setTimeout(function () {
					new Effect.BlindUp(obj.submenu, 
						{
							duration:effectDuration,
							beforeStart: function ()
							{
								obj.parentItem.className = '';
							},
							afterFinish: function ()
							{
								obj.submenu.style.visibility = 'hidden';
								obj.submenu.style.display = 'none'; 
								
							}
						});
				}, timer);
			} 
			MainNav[a].submenu.observe('mouseout', hidesubmenu.bindAsEventListener(this, MainNav[a]));  
		}
				
	}

	//ini thirdnavs events
	for(var y=0; y<MainNav.length; y++)
	{
		for(var m=0; m<MainNav[y].thirdLvL.length; m++)
		{
			if(MainNav[y].thirdLvL[m].thirdmenuNode)
			{
				
				function showthirdsub(event, obj) 
				{    
					clearTimeout(obj.thirdmenuouttimer);
					obj.thirdparentItem.style.backgroundColor =  '#b1d5f9';
					obj.thirdmenuovertimer = setTimeout(function () {
						if(obj.thirdmenuNode.style.visibility != 'visible')
						{
							new Effect.BlindDown(obj.thirdmenuNode, 
							{
								duration: thirdlevelduration,
								scaleX:	true,
								scaleY: true,
								beforeStart: function ()
								{
									obj.thirdmenuNode.style.visibility = 'visible';
									obj.thirdmenuNode.style.display = 'none'; 
									obj.thirdmenuNode.style.zIndex= '100'; 
								},
								afterFinish: function ()
								{
									obj.thirdmenuNode.style.visibility = 'visible';
									obj.thirdmenuNode.style.display = 'block'; 
								}
							});
						}
					}, timer);					   
				} 
				MainNav[y].thirdLvL[m].thirdparentItem.observe('mouseover', showthirdsub.bindAsEventListener(this, MainNav[y].thirdLvL[m]));  
				
				
				function hidethirdsub(event, obj) 
				{    
					clearTimeout(obj.thirdmenuovertimer);
					obj.thirdparentItem.style.backgroundColor =  '#f5f9fc';
					obj.thirdmenuouttimer = setTimeout(function () {
							if(obj.thirdmenuNode.style.display != 'none')
							{
								new Effect.BlindUp(obj.thirdmenuNode, 
								{
									duration: thirdlevelduration,
									scaleX:	true,
									scaleY: true,
									beforeStart: function ()
									{
										obj.thirdmenuNode.style.zIndex= '0'; 
									},
									afterFinish: function ()
									{
										obj.thirdmenuNode.style.visibility = 'hidden';
										obj.thirdmenuNode.style.display = 'none'; 
									}
								});
							}
					}, timer);
				} 
				MainNav[y].thirdLvL[m].thirdparentItem.observe('mouseout', hidethirdsub.bindAsEventListener(this, MainNav[y].thirdLvL[m]));  
				
				
				function showthirdsubmenu(event, obj) 
				{      
					obj.thirdparentItem.style.backgroundColor =  '#b1d5f9';
					clearTimeout(obj.thirdmenuouttimer);
					//clearTimeout(thirdobj.thirdmenuovertimer);
					//clearTimeout(thirdobj.thirdmenuovertimer2);
				} 
				MainNav[y].thirdLvL[m].thirdmenuNode.observe('mouseover', showthirdsubmenu.bindAsEventListener(this, MainNav[y].thirdLvL[m]));  
				
				
				function hidethirdsubmenu(event, obj) 
				{    
					
					obj.thirdmenuouttimer = setTimeout(function () {
							if(obj.thirdmenuNode.style.display != 'none')
							{
								new Effect.BlindUp(obj.thirdmenuNode, 
								{
									duration: thirdlevelduration,
									scaleX:	true,
									scaleY: true,
									beforeStart: function ()
									{
										obj.thirdmenuNode.style.zIndex= '0'; 
										obj.thirdparentItem.style.backgroundColor =  '#f5f9fc';
									},
									afterFinish: function ()
									{
										obj.thirdmenuNode.style.visibility = 'hidden';
										obj.thirdmenuNode.style.display = 'none'; 
									}
								});
							}
					}, timer);
				} 
				MainNav[y].thirdLvL[m].thirdmenuNode.observe('mouseout', hidethirdsubmenu.bindAsEventListener(this, MainNav[y].thirdLvL[m]));  

			}
		}	
	}
	
}

function setSubnavLeft(index)
{
	var mainnav_items = $$('#main_nav a', '#sidebar a'); 
	var leftoffset = null;
	var pageDim = $('body').getDimensions();
	if(pageDim.width < canvaswidth) { pageDim.width = canvaswidth; }
	var pageMiddle = pageDim.width/2;
	var canvasleft = pageMiddle + canvaswidth/2;
	
	var navwidths = new Array();
	
	for(var a=0; a < mainnav_items.length; a++)
	{	
		var temp = mainnav_items[a].getWidth();
		navwidths.push(temp);
	}
	navwidths.reverse() 
	var temp = 0;
	var rightoffset = 0;
	for(var a=0; a < (navwidths.length-index); a++)
	{	
		temp = temp + navwidths[a];
	if(a > (navwidths.length-wheretostartleftalign-1))
		{
			rightoffset = 0;
		}
		else
		{
			rightoffset = navwidths[a] - parseInt(subnavwidth) - 1;
		}
	}
	canvasleft = canvasleft - temp + rightoffset-1;
	return canvasleft;
}


function reposNav()
{
	//alert(MainNav.length);
	var mainnav_items = $('main_nav').getElementsByTagName('a');
	for(var i=0; i < mainnav_items.length; i++)
	{
		MainNav[i].submenu.style.left = setSubnavLeft(i) + 'px';
	}
	
	for(var i=0; i < MainNav.length; i++)
	{
		for(var r=0; r < MainNav[i].thirdLvL.length; r++)
		{
			MainNav[i].thirdLvL[r].thirdmenuNode.style.left = MainNav[i].thirdLvL[r].thirdmenuleft + 'px';
			MainNav[i].thirdLvL[r].thirdmenuNode.style.top = MainNav[i].thirdLvL[r].thirdmenutop + 'px';
		}
	}
}

function initNavPos()
{
	$('subnav_wrapper').style.top = $('header_wrapper').getHeight() -1 + 'px';
	//Main Nav Items Array
	var mainnav_items = $('main_nav').getElementsByTagName('a');

	//Get 2ndLevel subnav and put node references in array
	for(var i=0; i < mainnav_items.length; i++)
	{		
		var mainsubnav = {
			parentItem : null,
			submenu : null,
			submenuleft : null,
			overtimer : null,
			outtimer : null,
			subnavtimer : null
		}
		
		//look for subnav wrapper
		var subnavID = mainnav_items[i].id + '_subnav';
		
		if($(subnavID))
		{
			$(subnavID).cleanWhitespace(); 
			mainsubnav.parentItem = mainnav_items[i];
			mainsubnav.submenu = $(subnavID);
			
			if($(subnavID).getElementsByTagName('div'))
			{
				var subnavitems = $(subnavID).childElements();
				var temp = new Array();
				var top = 0;
				for(var q=0; q<subnavitems.length; q++)
				{
					if(subnavitems[q].nextSibling)
					{
						if(subnavitems[q].nextSibling.nodeName == 'DIV')
						{
							subnavitems[q].id = 'subnav_third';
							subnavitems[q].onclick = function () {return false; }
							subnavitems[q].onclick  = function (e)
								{return false; }	
							if (subnavitems[q].captureEvents) subnavitems[q].captureEvents(Event.ONCLICK);
							
							var thirdsubnav = {
								thirdparentItem : subnavitems[q],
								thirdmenuNode : subnavitems[q].nextSibling,
								thirdmenuleft : parseInt(subnavwidth),
								thirdmenutop : top,
								thirdmenuovertimer : 'null2',
								thirdmenuouttimer : null,
								thirdmenuouttimer2 : null
							}
							temp.push(thirdsubnav);
						}
						if(subnavitems[q].nodeName == 'A')
						{
							top = top + subnavitems[q].getHeight();
						}
						
					}
				}
				mainsubnav.thirdLvL = temp;
			}
			
			MainNav.push(mainsubnav);
			
		}
	}
}
function initNav()
{	
	initNavPos();
	reposNav();
	initNavEvents();
}
