// JavaScript Document
/* This is the new menu system I made to remove the nightmare of a 
system we have now.  Originally you had to load and reload a bunch of 
arrays and there was a lot of execption rules.  My goal is to remove the 
need for exception rules and to clean up the code so anyone could 
add or remove a menu item -- Jason Ball 4/18/2007 */


//This will dynamicly load the menu and CSS so that no one knows all the codes that run the system
document.writeln('<script language="javascript" type="text/javascript" src="/js/menu.js"></script>');
document.writeln('<link rel="stylesheet" href="/js/menu.css" type="text/css">');

var corewidth = 140;
var subwidth = 150;
var zindexer = 3;
var standard = "/detail.asp";
var openmenu = new Array;
var timer = '';


function mainmenu(name,ln)
	{
		this.menucount = 0;
		//CORE ARRAYS
		this.menuitems = new Array;
		this.menu = new Array;
		this.menulinks = new Array;
		this.menuchildren = new Array;
		this.menuname = new Array;
		this.menuwidth = new Array;
		
		//MAIN MENU SETUP
		this.menu[0] = new Array;
		this.menulinks[0] = new Array;
		this.menuchildren[0] = new Array;
		this.menuitems[0] = 0;
		
		//Main menu loadup
		this.menu[0][0] = name;
		this.menulinks[0][0] = ln;
		this.menuname[0] = "mainmenu";
		this.menuchildren[0][0] = "";
		this.menuwidth[0] = corewidth;
		
		this.submenu = submenu;
		this.menucounter = menucounter;
		this.arraysearch = arraysearch;
		this.menuclean = menuclean;
		this.opensub = opensub;
		
		var currentout = 0;
		var currentouttop = 0;
		var a = 0;
		var openname = new Array;
		var openid = 0;
		var unittop = new Array;
		var unitside = new Array;
		function submenu(menutext,ln,child,name,width)
			{
				var count = this.arraysearch(name,this.menuname,"submenu");
				if(width != "")
					{ this.menuwidth[count] = width; }
				if(width == "" && this.menuwidth[count] == 0)
					{ this.menuwidth[count] = subwidth; } 
					
				this.menu[count][this.menuitems[count]] = menutext;
				this.menulinks[count][this.menuitems[count]] = ln;
				if(child != "")
					{ this.menuchildren[count][this.menuitems[count]] = child; }
				else
					{ this.menuchildren[count][this.menuitems[count]] = ""; }
				
				this.menuitems[count]++;
				
			}
		function menucounter(name)
			{
				this.menucount++;
				this.menu[this.menucount] = new Array;
				this.menulinks[this.menucount] = new Array;
				this.menuchildren[this.menucount] = new Array;
				this.menuitems[this.menucount] = 0;
				this.menuwidth[this.menucount] = 0;
				if(name == "" && this.menucount == 1)
					{ 
						this.menuname[this.menucount] = "submenu";
						this.menuchildren[0][0] = "submenu";
					}
				if(name != "" && this.menucount == 1)
					{ 
						this.menuname[this.menucount] = "submenu"; 
						this.menuchildren[0][0] = "submenu";
					}
				if(name != "" && name != "submenu" && this.menucount == 1)
					{ alert("you must declaire your submenu before any children can be attached to it.  Either leave the name field blank or call it submenu"); }
				if(name != "" && this.menucount > 1)
					{ this.menuname[this.menucount] = name; }
				if(name == "" && this.menucount > 1)
					{ alert("child objects require a name, please add the menu name to the forth var in the submenu function"); }
				
			}
		function arraysearch(needle,haystack,passer)
			{
				if(needle == "")
					{ 
						if(this.menucount == 0)
							{ 
								this.menucounter(needle);
								return this.menucount;
							}
						else
							{ return 1; }
					}
				else
					{
						for(a=0;a<haystack.length;a++)
							{
								if(haystack[a] == needle)
									{ return a; }
							}
					}
				if(passer == "submenu")
					{
						this.menucounter(needle);
						return this.menucount;
					}
				else
					{ return false; }
				
			}
		function menuclean(id)
			{
				for(a=1;a<this.menuname.length;a++)
					{ document.getElementById(id+this.menuname[a]).style.display="none"; }
				openname = new Array;
				currentout = 0;
				currentouttop = 0;
			}
		function opensub(a,menuitem,id)
			{
				var b = this.arraysearch(menuitem,this.menuname,''); 
				if(openname.length > 0)
					{
						var c = this.arraysearch(menuitem,openname,'');
						if(c<openname.length)
							{ 	for(d=openname.length-1;d>c;d--)
									{
										if(document.getElementById(openid+openname[d]).style.display == "inline")
											{
												currentout = currentout - unitside[d]; 
												currentouttop = currentouttop - unittop[d]; 
												document.getElementById(openid+openname[d]).style.display = "none";
											}
									}
								var julia = new Array;
								var bob = new Array;
								var jamie = new Array;
								for(d=0;d<=c;d++)
									{ 
										julia[d] = openname[d]; 
										bob[d] = unittop[d];
										jamie[d] = unitside[d]; 
									}
								openname = new Array;
								unittop = new Array;
								unitside = new Array;
								
								openname = julia;
								unittop = bob;
								unitside = jamie;
								julia = null;
								bob = null;
								jamie = null;
							}
					
					}
				if(this.menuchildren[b][id] != "")
					{
						var obj = document.getElementById(a+this.menuchildren[b][id]).style;
						if(obj.display == "none")
							{
								openname[openname.length] = this.menuchildren[b][id];
								openid = a;
								
								var oldobj = document.getElementById(a+menuitem+id);
								var lpx = document.getElementById('mainmenu').offsetLeft;
								var tpx = document.getElementById('mainmenu').offsetTop;
								
								var wpx = oldobj.offsetWidth;
								
								if(menuitem != "mainmenu")
									{ 
										currentout += wpx; 
										unitside[unitside.length] = wpx;
									}
								
								currentouttop = currentouttop + oldobj.offsetTop-12; 
								unittop[unittop.length] = oldobj.offsetTop-12;
								obj.left=lpx+corewidth+currentout+"px";
								obj.top = tpx+currentouttop+"px";
								obj.display="inline";
							}
						
						
						
					}
			}
	}

function createmenu(menuitems)
	{
		//This is for main menu creation
		var div_content = "";
		
		
		var content = '<div id="mainmenu" class="mainmenu" style="width:'+corewidth+'px;position:relative"> \n';
		for(a=0;a<menuitems.length;a++)
			{	
				openmenu[a] = menuitems[a];
				
				if(menuitems[a].menulinks[0][0] != "")
					{
						if(menuitems[a].menulinks[0][0].substr(0,4) != "http" && menuitems[a].menulinks[0][0].substr(0,1) != "/")
							{ div_content = standard+'?'+menuitems[a].menulinks[0][0]; }
						else
							{ div_content = menuitems[a].menulinks[0][0]; }
					}
				else
					{ div_content = ""; }
					
				content = content + '<div '
				if(div_content != "")
					{ content = content + 'onClick="location.href=\''+div_content+'\'" '; }
				content = content + 'id="'+a+menuitems[a].menuname[0]+'0" class="menuunselect" onMouseOver="menuflipa(\''+menuitems[a].menuname[0]+'\','+a+',0,\''+menuitems[a].menuchildren[0][0]+'\');" onMouseOut="menuflipb(\''+menuitems[a].menuname[0]+'\','+a+',0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
				
				if(menuitems[a].menulinks[0][0] != "")
					{ 
						content = content +  '<a id="'+a+menuitems[a].menuname[0]+'link0" class = "menulink" href="';
						if(menuitems[a].menulinks[0][0].substr(0,4) != "http" && menuitems[a].menulinks[0][0].substr(0,1) != "/")
							{ content = content + standard+'?'+menuitems[a].menulinks[0][0]; }
						else
							{ content = content + menuitems[a].menulinks[0][0]; }
						content = content + '">';
					}
				else
					{ content = content + '<span id="'+a+menuitems[a].menuname[0]+'link0" class="menulink">'; }
				content = content + menuitems[a].menu[0][0];
				if(menuitems[a].menulinks[0][0] != "")
					{ content = content + "</a>"; }
				else
					{ content = content +  '</span>'; }
				content = content +  '</div>';		
			}
		
		content = content +  '</div>';
		
		
		//This is for the sub menus
		for(a=0;a<menuitems.length;a++)
			{
				if(menuitems[a].menucount > 0)
					{
						for(b=1;b<=menuitems[a].menucount;b++)
							{
								
								
								content = content +  '<div id="'+a+menuitems[a].menuname[b]+'" class="mainmenu" style="z-index:'+zindexer+';width:'+menuitems[a].menuwidth[b]+'px;top:0px;position:absolute;display:none">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
								 
								
								for(c=0;c<menuitems[a].menuitems[b];c++)
									{ 
										
										if(menuitems[a].menulinks[b][c] != "")
											{
												if(menuitems[a].menulinks[b][c].substr(0,4) != "http" && menuitems[a].menulinks[b][c].substr(0,1) != "/")
													{ div_content = standard+'?'+menuitems[a].menulinks[b][c]; }
												else
													{ div_content = menuitems[a].menulinks[b][c]; }
											}
										else
											{ div_content = ""; }
								
										content = content +  '<div ';
										if(div_content != "")
											{ content = content + 'onClick="location.href=\''+div_content+'\'" '; }
										
										content = content + 'id="'+a+menuitems[a].menuname[b]+c+'"class="menuunselect" onMouseOver="menuflipa(\''+menuitems[a].menuname[b]+'\',\''+a+'\',\''+c+'\',\''+menuitems[a].menuchildren[b][c]+'\','+menuitems[a].menuwidth[b]+');" onMouseOut="menuflipb(\''+menuitems[a].menuname[b]+'\','+a+','+c+');">&nbsp;&nbsp;&nbsp;';
										if(menuitems[a].menulinks[b][c] != "")
											{ 
												content = content +  '<a id="'+a+menuitems[a].menuname[b]+'link'+c+'" class = "menulink" href="';
												content = content + div_content;
												content = content +  '">';
											}
										else
											{ content = content +  '<span id="'+a+menuitems[a].menuname[b]+'link'+c+'" class="menulink">'; }
										content = content +  menuitems[a].menu[b][c];
										if(menuitems[a].menulinks[b][c] != "")
											{ content = content +  "</a>"; }
										else
											{ content = content +  '</span>'; }
										content = content +  '</div>';		
									}
						
								content = content +  '</div>';
							}
					
					}
			}
		//alert(content.substr(4600,content.length));
		document.writeln(content);
		menuitems = null;
	}

function menuflipa(menuitem,id,itemcount,child)
	{ 
		clearTimeout(timer);
		if(menuitem == "mainmenu")
			{
				for(var a=0;a<openmenu.length;a++)
					{ if(a != id)
							{ openmenu[a].menuclean(a); }
						else
							{ openmenu[a].opensub(id,menuitem,itemcount); } }
			}
		else
			{ openmenu[id].opensub(id,menuitem,itemcount); }

		document.getElementById(id+menuitem+itemcount).className = "menuselect";
		document.getElementById(id+menuitem+"link"+itemcount).className = "menuslink";
		
	}

function menuflipb(menuitem,id,itemcount)
	{ 
		document.getElementById(id+menuitem+itemcount).className = "menuunselect";
		document.getElementById(id+menuitem+"link"+itemcount).className = "menulink";
		timer = setTimeout("mousegone()",200)
	}
function mousegone()
	{
		for(var a=0;a<openmenu.length;a++)
			{
				if(document.getElementById(a+'mainmenu'+0).className == "menuselect")
					{ return true; }
				for(var b=0;b<openmenu[a].menuitems.length;b++)
					{ if(openmenu[a].menuitems[b] > 0)
							{ for(var c=0;c<openmenu[a].menuitems[b];c++)
								{ if(document.getElementById(a+openmenu[a].menuname[b]+c).className == "menuselect")
											{ return true; }  }  }
					}
				
			}
		for(a=0;a<openmenu.length;a++)
			{ openmenu[a].menuclean(a); }
	}