var IE4 = (document.all) ? 1 : 0;
var hideDelay = 200; //ms
var shiftX = -2;
var shiftY = 24;
if (window.navigator.appName == "Opera") {
	shiftX = -15;
	shiftY = 20;
}
if (window.navigator.appName == "Netscape") {
	shiftX = -10;
	shiftY = 20;
}
var cursorY = 0;
var cursorShiftX = 13;
var highlightedName = '';
var highlightedVName = '';

// ------------
// menu images
// ------------

function menuItem(name, title, href, submenu) {
	this.name = name;
	this.title = title;
	this.href = href;
	this.lock = false;
	this.itemFocused = false;
	this.submenuFocused = false;
	this.submenu = submenu;
	return this;
}

var theMenu = new Array(
	new menuItem("Company", "Company", "/company", new Array(
		new menuItem("Overview", "Overview",  "/company", new Array()),
		new menuItem("EasternEuropeAdvantages", "Eastern Europe Advantages", "/company/advantages.html", new Array()),
		new menuItem("ResourceCenters", "Resource Centers", "/company/centers.html", new Array())
	)),
	new menuItem("Services", "Services", "/services", new Array(
		new menuItem("ComprehensiveServices", "Comprehensive Services", "/services", new Array()),
		new menuItem("LocalizationServices", "Localization Services", "/services/localization.html", new Array()),
		new menuItem("DevelopmentProcessSetup", "Development Process Setup", "/services/setup.html", new Array()),
		new menuItem("RecruitingExpertise", "Recruiting Expertise", "/services/recruiting.html", new Array()),
		new menuItem("TrainingProgramsAndStrategies", "Training Programs & Strategies", "/services/training.html", new Array()),
		new menuItem("ProjectManagementResources", "Project Management Resources", "/services/project.html", new Array()),
		new menuItem("RetentionPrograms", "Retention Programs", "/services/retention.html", new Array()),
		new menuItem("GlobalInfrastructure", "Global Infrastructure", "/services/infrastructure.html", new Array())
	)),
	new menuItem("Clients", "Our Clients", "/clients", new Array(
		new menuItem("ClientSuccess", "Client Success", "/clients", new Array())
	)),
	new menuItem("Methodology", "Methodology", "/methodology", new Array(
		new menuItem("DistributedMethodology", "Distributed Methodology", "/methodology", new Array()), 	
		new menuItem("DevelopmentNeedsAnalysis", "Development Needs Analysis", "/methodology/analysis.html", new Array()), 
		new menuItem("Training", "Training", "/methodology/training.html", new Array())
	)),
	new menuItem("FAQs", "FAQs", "/faqs", new Array(
		new menuItem("ProviderFAQs", "Provider FAQs", "/faqs", new Array()), 	
		new menuItem("GeographicalFAQs", "Geographical FAQs", "/faqs/geographical.html", new Array())
	)),
	new menuItem("ContactUs", "Contact Us", "/contacts", new Array(
		new menuItem("ContactsOverview", "Overview", "/contacts", new Array()),
		new menuItem("Employment", "Employment", "/contacts/employment.html", new Array()),
		new menuItem("Partnerships", "Partnerships", "/contacts/partnerships.html", new Array())
	))
);

var theRoot = new menuItem("Root", "Home Page", "/", theMenu);

function loadLayers(root){
	loadLayer(root);
	for (var i=0; i<root.submenu.length; i++) loadLayers(root.submenu[i]);
}

function init(name,vname) {
	highlightedName=name;
	highlightedVName=vname;
}

function load() {
	loadLayers(theRoot);
	initHorizontalNavigation();
}
	
function getItem(menu, name) {
	for (var i=0; i<menu.length; i++) {
		if (menu[i].name != name) {
			var res = getItem(menu[i].submenu, name);
			if (res != null) return res;
		} else return menu[i];
	}
	return null;
}

function item(name) {
	return getItem(theMenu, name);
}

function addItem(menuName, name, title, href, hmenu, vmenu, submenu) {
	var menu = item(menuName);
	if (menu != null) menu.submenu[menu.submenu.length] = new menuItem(name, title, href, hmenu, vmenu, submenu);
}

function getParent(item, name) {
	for (var i=0; i<item.submenu.length; i++) {
		if (item.submenu[i].name != name) {
			var res = getParent(item.submenu[i], name);
			if (res != null) return res;
		} else return item;
	}
	return null;
}

function parentOf(name) {
	return getParent(theRoot, name)
}

function focusSubmenu(name) {
	item(name).submenuFocused = true;
}

function unfocusSubmenu(name) {
	item(name).submenuFocused = false;
	setTimeout("closeAllSubmenus(\'" + name + "\')", hideDelay);
}

function submenuItemAction(name,visibility) {
	if (IE4) {
		if (!document.all["anc" + name + "_left"]) return;
	
		with (document.all["anc" + name + "_left"]) {
			style.visibility = visibility;
		}
	} else if(document.getElementById) {
		var ancElement = document.anchors["anc" + name + "_left"];
		ancElement.style.visibility = visibility;
	} else {
		with (document.anchors["anc" + name + "_left"].parentNode) {
			style.visibility = visibility;
		}
	}
}

function focusSubmenuItem(name) {
	submenuItemAction(name, "visible");
}
function unfocusSubmenuItem(name) {
	submenuItemAction(name, "hidden");
}

function focusVSubmenuItem(name) {
	submenuItemAction(name + "_vertical", "visible");
}
function unfocusVSubmenuItem(name) {
	submenuItemAction(name + "_vertical", "hidden");
}

function layerAction(act,name,event) {
	if (IE4) {
		if (!document.all["div" + name]) return;
		parentOf(name).submenuLocked = act;
		if (act) {
			with (document.all["div" + name]) {
				style.posLeft = document.body.scrollLeft + event.clientX - event.offsetX + shiftX;
				style.posTop = document.body.scrollTop + event.clientY - event.offsetY + shiftY; // + event.srcElement.offsetHeight;
				style.visibility = "inherit";
			}
		} else {
			document.all["div" + name].style.visibility="hidden";
		}
	} else if(document.getElementById) {
		// --------------------------------------------------------
		// for NN6
		// --------------------------------------------------------
		parentOf(name).submenuLocked = act;
		if (act) {
			var divElement = document.getElementById("div" + name);
			divElement.style.left = event.pageX;
			// -----------------------------------------------
			// for NN6 change the top if header height changed
			// -----------------------------------------------
			if (event.target.x != undefined){
				divElement.style.top = event.target.y + event.target.height;
				divElement.style.left = event.target.x;
			} else {
				var bounds = getBounds(document.anchors["anc" + name]);
				divElement.style.left = bounds.left + shiftX;
				divElement.style.top = bounds.top + shiftY;
			}
			divElement.style.visibility = "inherit";
		} else {
			document.getElementById("div" + name).style.visibility = "hidden";
		}	
	} else {
		if (!document.layers["lyr" + name]) return;
		parentOf(name).submenuLocked = act;
		if (act) {
			with (document.anchors["anc" + name]) {
				var lyrLeft = x;
				var lyrTop = y;
			}

			with (document.layers["lyr" + name]) {
				left = lyrLeft + shiftX + 4;
				top = lyrTop + 16;
				visibility = "inherit";
			}
		} else {
			document.layers["lyr" + name].visibility = "hide";
		}
	}
}

function getBounds(element)
{
  var left = element.offsetLeft;
  var top = element.offsetTop;
  for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
  {
    left += parent.offsetLeft;
    top += parent.offsetTop;
  }
  return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}

function setImage(name,image) {
	document.images[name].src = image;
}

function showSubmenu(name,event) {
	item(name).itemFocused = true;
	layerAction(1, name,event);
}

function hideSubmenu(name) {
	item(name).itemFocused = false;
	setTimeout("closeSubmenu(\'" + name + "\')", hideDelay);
}

function closeSubmenu(name,event) {
	if ((!item(name).submenuFocused) 
		&& (!item(name).submenuLocked)
		&& (!item(name).itemFocused)) {
		parentOf(name).submenuLocked = false;
		layerAction(0, name,event);
	}
}

function closeAllSubmenus(name) {
	if (name != "Root") {
		closeSubmenu(name);
		closeAllSubmenus(parentOf(name).name);
	}	
}

function loadItem(anItem) {
	document.writeln('<tr>');
	document.writeln(	'<td class="colorch">');
	document.writeln(		'<a href="#" class="colorch">');
	document.writeln(			'<table border="0" cellpadding="1" cellspacing="2" width="100%" align="left">');
	document.writeln(				'<tr>');
	document.writeln(					'<td width="12" onmouseover="focusSubmenuItem(\'' + anItem.name + '\')" onmouseout="unfocusSubmenuItem(\'' + anItem.name + '\')" class="menu" valign="top" align="right">');
	document.writeln(						'<a href="' + anItem.href + '" class="menu_left" name="anc' + anItem.name + '_left">&gt;</a>');
	document.writeln(					'</td>');
	document.writeln(					'<td onClick="location.href=\'' + anItem.href + '\'" onmouseover="focusSubmenuItem(\'' + anItem.name + '\')" onmouseout="unfocusSubmenuItem(\'' + anItem.name + '\')" class="menu" valign="top" align="left">');
	if (anItem.name == highlightedVName) {
		document.writeln(						'<a href="' + anItem.href + '" class="menu" style="text-decoration: underline;" name="anc' + anItem.name + '"><nobr>' + anItem.title + '</nobr></a>');
	} else {
		document.writeln(						'<a href="' + anItem.href + '" class="menu" name="anc' + anItem.name + '"><nobr>' + anItem.title + '</nobr></a>');
	}
	document.writeln(					'</td>');
	document.writeln(				'</tr>');
	document.writeln(			'</table>');
	document.writeln(		'</a>');
	document.writeln(	'</td>');
	document.writeln('</tr>');
}

function loadLayer(root){
	
	document.writeln('');
	if(!document.getElementById) {
		document.writeln('<layer name="lyr' + root.name + '"  visibility="hide" top="0" left="0" onmouseover="focusSubmenu(\'' + root.name + '\')" onmouseout="unfocusSubmenu(\'' + root.name + '\');">');
		document.writeln('<nolayer>');
	}
	
	document.writeln('<div id="div' + root.name + '" style="position:absolute; top:0; left:0; visibility:hidden" onmouseover="focusSubmenu(\'' + root.name + '\')" onmouseout="unfocusSubmenu(\'' + root.name + '\');">');
	if(!document.getElementById) {	
		document.writeln('</nolayer>');
	}

	document.writeln(	'<table border=0 cellpadding=0 cellspacing=0 bgcolor="F0F0F0">');
	document.writeln(		'<tr>');
	document.writeln(			'<td>');
	document.writeln(				'<table border=0 cellpadding=0 cellspacing=1 >');

	for (var i=0; i<root.submenu.length; i++) {
		loadItem(root.submenu[i]);
	}

	document.writeln(				'</table>');
	document.writeln(			'</td>');
	document.writeln(		'</tr>');
	document.writeln(	'</table>');

	if(!document.getElementById) {
		document.writeln('<nolayer>');
	}
	
	document.writeln('</div>');
	if(!document.getElementById) {
		document.writeln('</nolayer>');
		document.writeln('</layer>');
	}
	document.writeln('');
}


function initHorizontalNavigation() {
	if (IE4) {
		if (!document.all["td" + highlightedName]) return;
	
		with (document.all["td" + highlightedName]) {
			className = "sel";
		}
	} else if(document.getElementById) {
		var tdElement = document.getElementById("td" + highlightedName);
		tdElement.className = "sel";
	} else {
		with (document.anchors["anc" + name + "_left"]) {
			visibility = visibility;
		}
	}
}

function loadVerticalNavigation() {
	var menu = item(highlightedName);
	document.writeln('<table cellpadding="0" cellspacing="0" border="0" width="205">');
	document.writeln('	<tr>');
	document.writeln('		<td class="subnavheader" height="25" colspan="2">');
	document.writeln('		<a href="' + menu.href + '" class="subnavheadersel">' + menu.title + '</a>');
	document.writeln('		</td>');
	document.writeln('	</tr>');
	for (var i=0; i<menu.submenu.length ; i++) {
		var anItem = menu.submenu[i];
		document.writeln('	<tr>');
		document.writeln('		<td width="12" class="subnavitem" valign="top" align="right">');
		if (anItem.name == highlightedVName) {
			document.writeln('			<a href="' + anItem.href + '" class="subnavitem_left_selected" name="anc' + anItem.name + '_vertical_left">&gt;</a>');
		} else {
			document.writeln('			<a href="' + anItem.href + '" class="subnavitem_left" name="anc' + anItem.name + '_vertical_left">&gt;</a>');
		}
		document.writeln('		</td>');
		document.writeln('		<td onClick="location.href=\'' + anItem.href + '\'" class="subnavitem" align="left">');
		document.writeln('			<a href="' + anItem.href + '" class="subnavitem" name="anc' + anItem.name + '_vertical">' + anItem.title + '</a>');
		document.writeln('		</td>');
		document.writeln('	</tr>');
	}
	document.writeln('</table>');
}

function loadVerticalMenu(menuName) {
	var menu = item(menuName);
	if (menu == null) return;
	if (menuName == highlightedName) {
		document.writeln('<div class="subnavheadersel"><a href="' + menu.href + '">' + menu.title + '</a></div>');	
	} else {
		document.writeln('<div class="subnavheader"><a href="' + menu.href + '">' + menu.title + '</a></div>');	
	}
	document.writeln('<div class="subnavblock">');
	if (menuName == highlightedName) {
		for (var i=0; i<menu.submenu.length ; i++) {
			var submenu = menu.submenu[i];
			if (submenu.name == highlightedVName || null != getItem(submenu.submenu, highlightedVName)) {
				document.write('<div class="subnavitemsel">');
				if (submenu.name == highlightedVName) {
					if (submenu.href != null && submenu.href != '') document.write('<a class="subnavitemsel" href="' + submenu.href + '">');
				} else {
					if (submenu.href != null && submenu.href != '') document.write('<a href="' + submenu.href + '">');
				}
				document.write(submenu.title);
				if (submenu.href != null && submenu.href != '') document.write('</a>');
			} else {
				document.write('<div class="subnavitem">');
				if (submenu.href != null && submenu.href != '') document.write('<a href="' + submenu.href + '">');
				else document.write('<h4>');
				document.write(submenu.title);
				if (submenu.href != null && submenu.href != '') document.write('</a>');
				else document.write('</h4>');
			}
			if (submenu.name == highlightedVName || null != getItem(submenu.submenu, highlightedVName)) {
				if (submenu.submenu.length > 0) {
					loadVerticalSubmenu(submenu.name);
				}
			}
			document.writeln('</div>');
		}
	}
	
	document.writeln('</div>');
}

function loadVerticalSubmenu(submenuName) {
	var menu = item(submenuName);
	if (menu == null) return;
	document.writeln();
	document.writeln('<div style="padding-left: 10px; position: relative; padding-top:0px;">');
	for (var i=0; i<menu.submenu.length; i++) {
		var submenu = menu.submenu[i];
		if (submenu.href != null && submenu.href != '') {
			document.write('<a');
			if (submenu.name == highlightedVName) document.write(' class="subnavitemsel"');
			document.write(' href="' + submenu.href + '">');
		}
		document.write(submenu.title);
		if (submenu.href != null && submenu.href != '') document.write('</a>');
		if (submenu.name == highlightedVName || null != getItem(submenu.submenu, highlightedVName)) {
			if (submenu.submenu.length > 0) {
				loadVerticalSubmenu(submenu.name, highlightedVName);
			}
		}
	}
	document.writeln('</div>');
}
