// Link Types
var TYPE_MAIN_LEVEL = 0;
var TYPE_CONSTRUCTION = 1;
var TYPE_GO_GREEN = 2;
var TYPE_SERVICE = 3;
var TYPE_SYSTEM = 4;
var TYPE_PEOPLE = 5;

// array of Navigation objects
var siteOptions = new Array();
// nav counter
var navCnt = 0;

// Navigation class
function NavLink(level, description, page, type)
{
	this.level = level;
	this.description = description;
	this.page = page;
	this.type = type;
	return this;
}	

// adds a Navigation Link object to the array
function loadNavigationOption(level, description, page, type)
{
	// add a Navigation Link object to the array
	siteOptions[navCnt] = new NavLink(level, description, page, type);
	// increment array counter
	navCnt++;
}

// load the navigation options
// main links
loadNavigationOption(1, "Home", "index.html", TYPE_MAIN_LEVEL);
loadNavigationOption(2, "Construction Division", "construction.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(2, "Energy Savings - Go Green", "go_green.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(2, "Service Division", "service.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(1, "24 Hour Emergency Service", "24hr.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(2, "Systems Division", "systems.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(1, "Our Portfolio", "portfolio.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(1, "Our Mission", "mission.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(2, "Our People", "people.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(1, "Contact Us", "contact.htm", TYPE_MAIN_LEVEL);
loadNavigationOption(1, "Site Map", "site.htm", TYPE_MAIN_LEVEL);
// construction child links
loadNavigationOption(3, "Industrial", "con_ind.htm", TYPE_CONSTRUCTION);
loadNavigationOption(3, "Commercial", "con_com.htm", TYPE_CONSTRUCTION);
loadNavigationOption(3, "Multifamily-Mixed Use", "con_multi.htm", TYPE_CONSTRUCTION);
loadNavigationOption(3, "Design/Build", "con_des.htm", TYPE_CONSTRUCTION);
loadNavigationOption(3, "Residential", "con_res.htm", TYPE_CONSTRUCTION);
loadNavigationOption(3, "Remodel", "con_rem.htm", TYPE_CONSTRUCTION);
// go green child links
// loadNavigationOption(3, "Ameren MO Cash Incentives", "go_ameren.htm", TYPE_GO_GREEN);
loadNavigationOption(3, "Lighting Audits", "go_audit.htm", TYPE_GO_GREEN);
loadNavigationOption(3, "Lighting Retrofits", "go_retro.htm", TYPE_GO_GREEN);
// service child links
loadNavigationOption(3, "Industrial", "ser_ind.htm", TYPE_SERVICE);
loadNavigationOption(3, "Commercial", "ser_com.htm", TYPE_SERVICE);
loadNavigationOption(3, "Residential", "ser_res.htm", TYPE_SERVICE);
loadNavigationOption(3, "Retail Service Companies", "ser_ret.htm", TYPE_SERVICE);
loadNavigationOption(3, "Realtors", "ser_real.htm", TYPE_SERVICE);

// system child links
// loadNavigationOption(3, "Security Control Systems", "sys_sec.htm", TYPE_SYSTEM);
// loadNavigationOption(3, "Burglary Systems", "sys_burg.htm", TYPE_SYSTEM);
// loadNavigationOption(3, "Fire Alarm Systems", "sys_fire.htm", TYPE_SYSTEM);
// loadNavigationOption(3, "Audio Systems", "sys_aud.htm", TYPE_SYSTEM);
// loadNavigationOption(3, "Intercom Systems", "sys_int.htm", TYPE_SYSTEM);
loadNavigationOption(3, "Monitoring Services", "sys_mon.htm", TYPE_SYSTEM);

// people child links
loadNavigationOption(3, "Safety", "peo_safe.htm", TYPE_PEOPLE);
loadNavigationOption(3, "Training", "peo_train.htm", TYPE_PEOPLE);

// this flag will let use know if we are on a page that is not in the menu; we don't want to highlight anything
var noHighlights = false;

// main method; called to draw the menu and highlight the correct entry based on the page name
function writeMenu()
{
	var pageName = "";
	var pathArray = window.location.pathname.split('/');
	// make sure there are values in the array
	if ((pathArray != null) && (pathArray.length > 0))
	{
		// get the page name from the array
		pageName = pathArray[pathArray.length -1];

		// if the page name is blank; the user naviaged to the root of the web site
		if (pageName.length == 0) pageName = "index.html";
		
		// if we are redirecting to the thankyou page set the menu to the home page
		if (pageName == "thankyou.htm") 
		{
			pageName = "index.html";
			noHighlights = true;
		}

		// draw the appropriate level based on the page name
		if (getLevel(pageName) == 1)
			document.write(drawLevelOneMenu(pageName));
		else if  (getLevel(pageName) == 2)
			document.write(drawLevelTwoMenu(pageName));	
		else if  (getLevel(pageName) == 3)
			document.write(drawLevelThreeMenu(pageName));
	}
}

// draws the level one menu options
function drawLevelOneMenu(pageName)
{
	var s = "";
	
	// get the main level items
	var mainOptions = getNavOptionByType(TYPE_MAIN_LEVEL);

	s = "<br /><div id=\"coolmenu\">";
    s += "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
	for (var i = 0; i < mainOptions.length; i++)
	{
		s += "<tr><td style=\"padding-left:22px\">";
		s += "<a style=\"color: ";
		if (mainOptions[i].page.toUpperCase().indexOf(pageName.toUpperCase()) >= 0)
		{
			if (! noHighlights) s += "red";
		}
		else
			s+= "black";

		s += ";\" ";
		s += "href=\"" + mainOptions[i].page + "\">" + mainOptions[i].description + "</a></td></tr>";
		// draw the line
		s += "<tr><td style=\"padding-left:22px;text-align:left;height:1px;\"><hr style=\"height:1px;width:200px;\" /></td></tr>";
	}
	s += "</table><br />";
	s += "</div>";
	
	return s;
}

// draws the level two menu options
function drawLevelTwoMenu(pageName)
{
	var s = "";
	// get the main level items
	var mainOptions = getNavOptionByType(TYPE_MAIN_LEVEL);
	var subOptions = null;

	// get the sub-items based on the page
	if (pageName == "construction.htm") subOptions = getNavOptionByType(TYPE_CONSTRUCTION);
	if (pageName == "go_green.htm") subOptions = getNavOptionByType(TYPE_GO_GREEN);
	if (pageName == "service.htm") subOptions = getNavOptionByType(TYPE_SERVICE);
	if (pageName == "systems.htm") subOptions = getNavOptionByType(TYPE_SYSTEM);
	if (pageName == "people.htm") subOptions = getNavOptionByType(TYPE_PEOPLE);

	s = "<br /><div id=\"coolmenu\">";
	s += "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
	for (var i = 0; i < mainOptions.length; i++)
	{
		s += "<tr><td style=\"padding-left:22px\">";
		s += "<a style=\"color: ";

		if (mainOptions[i].page.toUpperCase().indexOf(pageName.toUpperCase()) >= 0)
			s += "red";
		else
			s+= "black";

		s += ";\" ";
		s += "href=\"" + mainOptions[i].page + "\">" + mainOptions[i].description + "</a></td></tr>";
		
		// if construction, go green, service, system or people; loop through and build child menu items for construction
		if (((mainOptions[i].page == "construction.htm") & (pageName == "construction.htm"))  |
			((mainOptions[i].page == "go_green.htm") & (pageName == "go_green.htm")) |
			((mainOptions[i].page == "service.htm") & (pageName == "service.htm"))  |
			((mainOptions[i].page == "systems.htm") & (pageName == "systems.htm"))  |
			((mainOptions[i].page == "people.htm") & (pageName == "people.htm")))	
		{
			s += buildLevelTwoSubItems(subOptions);
		}
		
		// draw the line
		s += "<tr><td style=\"padding-left:22px;text-align:left;height:1px;\"><hr style=\"height:1px;width:200px;\" /></td></tr>";
	}
	s += "</table><br />";
	s += "</div>";
	 
	return s;
}
// draws the child level nav options
function buildLevelTwoSubItems(subOptions)
{
	var s = "";
	for (var x = 0; x < subOptions.length; x++)
	{
		s += "<tr>";
		s += "<td style=\"padding-left:42px;\">";
		s += "<a class=\"two\" href=\"" + subOptions[x].page + "\">";
		s += subOptions[x].description + "</a></td></tr>";
	}
	return s;
}

// draws the level three menu options
function drawLevelThreeMenu(pageName)
{
	var s = "";

	// get the main level items
	var mainOptions = getNavOptionByType(TYPE_MAIN_LEVEL);
	var subOptions = null;

	// get the sub-items based on the page
	if (pageName.substr(0, 4) == "con_") subOptions = getNavOptionByType(TYPE_CONSTRUCTION);
	if (pageName.substr(0, 3) == "go_") subOptions = getNavOptionByType(TYPE_GO_GREEN);
	if (pageName.substr(0, 4) == "ser_") subOptions = getNavOptionByType(TYPE_SERVICE);
	if (pageName.substr(0, 4) == "sys_") subOptions = getNavOptionByType(TYPE_SYSTEM);
	if (pageName.substr(0, 4) == "peo_") subOptions = getNavOptionByType(TYPE_PEOPLE);

	s = "<br /><div id=\"coolmenu\">";
	s += "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
	for (var i = 0; i < mainOptions.length; i++)
	{
		s += "<tr><td style=\"padding-left:22px\">";
		s += "<a style=\"color: black";
		s += ";\" ";
		s += "href=\"" + mainOptions[i].page + "\">" + mainOptions[i].description + "</a></td></tr>";
 
		if (((pageName.substr(0, 4) == "con_") & (mainOptions[i].page == "construction.htm")) |
			((pageName.substr(0, 3) == "go_") & (mainOptions[i].page == "go_green.htm")) |
			((pageName.substr(0, 4) == "ser_") & (mainOptions[i].page == "service.htm")) |
			((pageName.substr(0, 4) == "sys_") & (mainOptions[i].page == "systems.htm")) |
			((pageName.substr(0, 4) == "peo_") & (mainOptions[i].page == "people.htm")))
		{
			s += buildLevelThreeSubItems(subOptions, pageName);
		}
		
		// draw the line
		s += "<tr><td style=\"padding-left:22px;text-align:left;height:1px;\"><hr style=\"height:1px;width:200px;\" /></td></tr>";
	}
	s += "</table><br />";
	s += "</div>";
	 
	return s;
}
// draws the child level nav options and highlights the one that matches the page anem
function buildLevelThreeSubItems(subOptions, pageName)
{
	var s = "";
	for (var x = 0; x < subOptions.length; x++)
	{
		s += "<tr><td style=\"padding-left:42px;\">";
		s += "<a  class=\"two\" style=\"color: ";

		if (subOptions[x].page.toUpperCase() == pageName.toUpperCase())
			s += "red";
		else
			s+= "black";

		s += ";\" href=\"" + subOptions[x].page + "\">";
		s += subOptions[x].description + "</a></td></tr>";
	}
	return s;
}

// returns a new array of Nav Link objects based on the type
function getNavOptionByType(type)
{
	var navOptions = new Array();
	var cnt = 0;
	for (var i = 0; i < siteOptions.length; i++)
	{
		if (siteOptions[i].type == type)
		{
			navOptions[cnt] = new NavLink(siteOptions[i].level, siteOptions[i].description, siteOptions[i].page, siteOptions[i].type);
			cnt++;
		}
	}
	return navOptions;
}

// loop through the array of objects and find the page
// when the page is found; return it's level
function getLevel(pageName)
{
	var level = -1;
	for (var i = 0; i < siteOptions.length; i++)
	{
		if (siteOptions[i].page.toUpperCase() == pageName.toUpperCase())
		{
			level = siteOptions[i].level;
			break;
		}
	}
	return level;
}

