/***********************************************
* Menu add-in © LuxRed (www.luxred.com)
* This add-in allow the users to write the menu elements in this .js file
***********************************************/

// Menu definition
//---------------------------------------------------------------------------
// The menu options need to be in order
// If the menu element doesn't have a link URL, please use a sharp # instead.
// Structure: new MenuOption(level,subLevel, text, link title, link URL);

var LeftMenu = new Array();
var TopMenu = new Array

var i = 0;
var j = 0;
var k = 0;

i = 0;
j = 1;
// Maximal software TOP MENU
TopMenu[i++] = new MenuOption(j++,0,"ABOUT", "About Maximal Software", "maximal");
TopMenu[i++] = new MenuOption(j++,0,"MPL", "MPL Modeling System", "mpl");
TopMenu[i++] = new MenuOption(j++,0,"OPTIMAX", "OptiMax Library", "optimax");
TopMenu[i++] = new MenuOption(j++,0,"SOLVERS", "Solvers for MPL", "solvers");
TopMenu[i++] = new MenuOption(j++,0,"SALES", "Sales", "sales");
TopMenu[i++] = new MenuOption(j++,0,"FREE", "Free Software", "freedev");
TopMenu[i++] = new MenuOption(j++,0,"DOWNLOAD", "Downloads", "download");
TopMenu[i++] = new MenuOption(j++,0,"SUPPORT", "Support", "support/mplfaq.html");
TopMenu[i++] = new MenuOption(j++,0,"RESOURCES", "Other resources", "resources");
//TopMenu[7] = new MenuOption(8,0,"SEARCH", "Search our website", "search");

i = 0;
j = 1;
k = 0;
// Maximal software
LeftMenu[i++] = new MenuOption(j,k++,"Maximal Software", "Maximal Software", "#");
LeftMenu[i++] = new MenuOption(j,k++,"About Maximal", "About Maximal Software", "maximal");
LeftMenu[i++] = new MenuOption(j,k++,"History of Maximal", "History of Maximal", "maximal/history.html");
LeftMenu[i++] = new MenuOption(j,k++,"News", "News from Maximal", "maximal/news");
LeftMenu[i++] = new MenuOption(j,k++,"Seminars", "Seminars", "seminar");
//LeftMenu[i++] = new MenuOption(j,k++,"What is optimization", "What is optimization", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Online Survey", "Online Survey", "maximal/survey.html");
LeftMenu[i++] = new MenuOption(j,k++,"Contact Maximal", "Contact Maximal", "maximal/contact.html");

j++;
k = 0;
// MPL Modeling System
LeftMenu[i++] = new MenuOption(j,k++,"MPL Modeling System", "MPL Modeling System", "#");
LeftMenu[i++] = new MenuOption(j,k++,"What is MPL", "What is MPL", "mpl/what.html");
LeftMenu[i++] = new MenuOption(j,k++,"Key Features of MPL", "Key Features of MPL", "mpl/features.html");
//LeftMenu[i++] = new MenuOption(j,k++,"Solvers for MPL", "Solvers for MPL", "solvers");
LeftMenu[i++] = new MenuOption(j,k++,"Database Connection", "Database Connection", "mpl/database.html");
LeftMenu[i++] = new MenuOption(j,k++,"Sample Model File", "Sample Model File", "mpl/sample.html");
LeftMenu[i++] = new MenuOption(j,k++,"MPL Manual", "MPL Manual", "mplman");
LeftMenu[i++] = new MenuOption(j,k++,"Quick Guide", "Quick Guide", "mpl/quickguide.html");
LeftMenu[i++] = new MenuOption(j,k++,"Online tutorial", "Online tutorial", "mpltutor");
LeftMenu[i++] = new MenuOption(j,k++,"Model Library", "Model Library", "modellib");
LeftMenu[i++] = new MenuOption(j,k++,"Download MPL", "Download MPL", "download");
LeftMenu[i++] = new MenuOption(j,k++,"Request Information", "Request Information", "form/reqinfo.html");
//LeftMenu[i++] = new MenuOption(j,k++,"How to Order", "How to Order", "#");

j++;
k = 0;
// OptiMax Component Library
LeftMenu[i++] = new MenuOption(j,k++,"OptiMax Library", "OptiMax Library", "#");
LeftMenu[i++] = new MenuOption(j,k++,"What is OptiMax", "What is OptiMax", "optimax");
LeftMenu[i++] = new MenuOption(j,k++,"OptiMax Object Model", "OptiMax Object Model", "optimax/objectmodel.html");
LeftMenu[i++] = new MenuOption(j,k++,"On-line Tutorial", "On-line Tutorial", "optimax/tutorial");
//LeftMenu[i++] = new MenuOption(j,k++,"OptiMax Online Manual", "OptiMax Online Manual", "");
LeftMenu[i++] = new MenuOption(j,k++,"OptiMax Samples", "OptiMax Samples", "optimax/opxsamples.html");
LeftMenu[i++] = new MenuOption(j,k++,"Download OptiMax", "Download OptiMax", "download");
LeftMenu[i++] = new MenuOption(j,k++,"Request information", "Request information", "form/reqinfo.html");
//LeftMenu[i++] = new MenuOption(j,k++,"How to Order", "How to Order", "#");

j++;
k = 0;
// Solvers for MPL
LeftMenu[i++] = new MenuOption(j,k++,"Solvers for MPL", "Solvers for MPL", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Supported Solvers", "Supported Solvers", "solvers");
//LeftMenu[i++] = new MenuOption(j,k++,"Problem Types", "Problem Types", "solvers/probtypes.html");
//LeftMenu[i++] = new MenuOption(j,k++,"Solvers Documentation", "Solvers Documentation", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Option Parameters", "Option Parameters", "solvopt");
//LeftMenu[i++] = new MenuOption(j,k++,"How to Order", "How to Order", "#");

/*j++;
k = 0;
// Database connection
LeftMenu[i++] = new MenuOption(j,k++,"Database Connection", "Database Connection", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Databases", "Databases", "mpl/database.html");
LeftMenu[i++] = new MenuOption(j,k++,"MS Excel", "MS Excel", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Text Files", "Text Files", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Binary Files", "Binary Files", "#");
LeftMenu[i++] = new MenuOption(j,k++,"XML Files", "XML Files", "#");
LeftMenu[i++] = new MenuOption(j,k++,"SAP", "SAP", "#");
*/

j++;
k = 0;
// Customer Support
LeftMenu[i++] = new MenuOption(j,k++,"Customer Support", "Customer Support", "#");
LeftMenu[i++] = new MenuOption(j,k++,"FAQ", "FAQ", "support/mplfaq.html");
//LeftMenu[i++] = new MenuOption(j,k++,"Maintenance", "Maintenance", "#");
//LeftMenu[i++] = new MenuOption(j,k++,"New releases", "New releases", "#");
//LeftMenu[i++] = new MenuOption(j,k++,"Licensing", "Licensing", "#");
//LeftMenu[i++] = new MenuOption(j,k++,"Technical Support", "Technical Support", "#");
//LeftMenu[i++] = new MenuOption(j,k++,"Consulting", "Consulting", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Seminars", "Seminar", "seminar/#");

j++;
k = 0;
// Resources
LeftMenu[i++] = new MenuOption(j,k++,"Resources", "Resources", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Conference Schedule", "Conference Schedule", "confer");
LeftMenu[i++] = new MenuOption(j,k++,"O.R. Societies", "O.R. Societies", "resources/orsoc.html");
LeftMenu[i++] = new MenuOption(j,k++,"Links to O.R. Pages", "Links to O.R. Pages", "resources/orlinks.html");
//LeftMenu[i++] = new MenuOption(j,k++,"Problem Libraries", "Problem Libraries", "#");
//LeftMenu[i++] = new MenuOption(j,k++,"Benchmarking", "Benchmarking", "#");
LeftMenu[i++] = new MenuOption(j,k++,"Slide Presentations", "Slide Presentations", "resources/slides.html");
LeftMenu[i++] = new MenuOption(j,k++,"White Papers", "White Papers", "resources/whitepapers.html");

/*
j++;
k = 0;
// Search
LeftMenu[58] = new MenuOption(j,k++,"Search", "Search Maximal Web", "#");
*/

/* No need to edit beyond here */

// Page location variables
var pageURL = window.location.pathname;
var pageURLLength = pageURL.length;

// Custom object constructors
function MenuOption(level, subLevel, text, title, href) {
	this.level = parseInt(level);
	this.subLevel = parseInt(subLevel);
	this.text = text;
	this.href = href;
	this.title = title;
}

// Function to dynamically asign page locations
function CurrentLocation(pageURL)
{
	var location ="";
	var locationFolders = pageURL.split("/");

	for (var i=1; i < locationFolders.length-1; i++) 
		location += "../";
	
	return location;
}

// Function to write the LEFT menu elements
function writeMenu()
{
	var li_flag;
	var ul_flag;
	var j=0;
	
	// Prints the initial unordered list tag 
	document.write('<ul id="Menu" class="treeview">');
	
	for (var i=0; i < LeftMenu.length; i++)
	{		
		ul_flag = true;
		
		// Evaluates if the element level
		if (LeftMenu[i].subLevel == 0)
		{
			// Prints level element tag
			document.write("<li>" + "<a href='" + LeftMenu[i].href + "' title='" + LeftMenu[i].title + "'><div>" + LeftMenu[i].text + "</div></a>");
			
			// Initialize variables
			j = i+1;
			li_flag = true;
			
			// Adds the initial <ul> tag
			if ((i+1 < LeftMenu.length) && (LeftMenu[i].level == LeftMenu[i+1].level) && (ul_flag))
			{
				document.write('<ul>');
				ul_flag = false;
			}
			
			// Evaluates sublevel elements
			while((li_flag) && (j < LeftMenu.length))
			{
				if (LeftMenu[j].subLevel == 0) { li_flag = false; }
				else { document.write("<li>" + "<a href='" + CurrentLocation(pageURL) + LeftMenu[j].href + "' title='" + LeftMenu[j].title + "'><div>" + LeftMenu[j].text + "</div></a>" + "</li>"); }
				
				j++;
			}
			
			// Adds the final </ul> tag
			if (!ul_flag) { document.write('</ul>'); }
			
			// Prints level element close tag
			document.write('</li>');
		}
	}
	// Prints the final unordered list tag 
	document.write('</ul>');
}

function writeLeftMenu()
{
   writeMenu();
}

// Function to write TOP menu elements
function writeTopMenu()
{
	var li_flag;
	var ul_flag;
	var j=0;
	
	// Prints the initial unordered list tag 
	document.write('<ul id="TopMenu">');
	
	for (var i=0; i < TopMenu.length; i++)
	{		
		ul_flag = true;
		
		// Evaluates if the element level
		if (TopMenu[i].subLevel == 0)
		{
			// Prints level element tag
			document.write("<li>" + "<a href='" + CurrentLocation(pageURL) + TopMenu[i].href + "' title='" + TopMenu[i].title + "'>" + TopMenu[i].text + "</a>");
			
			// Initialize variables
			j = i+1;
			li_flag = true;
			
			// Adds the initial <ul> tag
			if ((i+1 < TopMenu.length) && (TopMenu[i].level == TopMenu[i+1].level) && (ul_flag))
			{
				document.write('<ul>');
				ul_flag = false;
			}
			
			// Evaluates sublevel elements
			while((li_flag) && (j < TopMenu.length))
			{
				if (TopMenu[j].subLevel == 0) { li_flag = false; }
				else { document.write("<li>" + "<a href='" + CurrentLocation(pageURL) + TopMenu[j].href + "' title='" + TopMenu[j].title + "'>" + TopMenu[j].text + "</a>" + "</li>"); }
				
				j++;
			}
			
			// Adds the final </ul> tag
			if (!ul_flag) { document.write('</ul>'); }
			
			// Prints level element close tag
			document.write('</li>');
		}
	}
	// Prints the final unordered list tag 
	document.write('</ul>');
}
