var menuTimeoutReference;
var timeoutInterval = 1000;
var useAllCaps = true;
var topMenuItems = -1;
var topMenus = new Array();
var defaultHTML = '';
var defaultLeftSubmenuHTML = '';
var defaultTopSubmenu2HTML = '';
var defaultSpacerImg = '';
var navContainer;
var isFirst = true;
var isFirstL2Menu = true;
var menuIds = new Array();
var level1MenuIds = new Array();
var topNavIds = new Array();
var level1Menus = new Array();
var level2MenuIds = new Array();
var level2MenuLabels = new Array();
var level2Menus = new Array();
var level3MenuIds = new Array();
var level3Menus = new Array();
var level4MenuIds = new Array();
var level4Menus = new Array();
var level5MenuIds = new Array();
var level5Menus = new Array();
var curPageURL = '';
var curPage = '';
var linkURL = '';
var target = '';
var curLocation = '';
var preloadedMenu = new Array();
var lineBreak = '\n';
var eTitleString = 'TitleEng';
var aTitleString = 'TitleArb';
var titleString = eTitleString;
var showMenuFuncName = 'showMenu';
var hideMenuFuncName = 'hideMenu';
var js_Anchor = 'left';

var activeItemsArray = new Array();
activeItemsArray[0] = 'activeMainNavigation';
activeItemsArray[1] = 'activeTopSubnavigation';

var activeItemIDs = new Array();
activeItemIDs[0] = '';
activeItemIDs[1] = '';

var topNavContainer = 'navContainer';
var topSubnavContainer = 'topSubnavigationContainer';
var leftNavContainer = 'leftNavigationContainer';
var leftSubNavContainer = 'leftSubNavigationContainer';
var leftNavigationContainer2 = 'leftNavigationContainer2';
var fixerImageName = 'heightFixer';
var contentFixerImageName = 'contentHeightFixer';
var l2TopMarker = 'l2TopMarker';
var origWidth = actualPageWidth();
var origHeight = actualPageHeight();
var preloadMenuCommand = "";

// Determine browser.
var ie=document.all&&navigator.userAgent.indexOf("Opera")==-1
var menuOffset = 0;

function getPageDetails()
{
	curPageURL = document.location.href;
	if(curPageURL.indexOf('.') > 0 )
	{
		curPage = curPageURL.substring(curPageURL.indexOf('.'));
		if(curPage.indexOf('/') > 0 )
			curPage = curPage.substring(curPage.indexOf('/'));
	}
}

function findPosX(obj)
{
	var curLeft = 0;
	if(obj)
	{
		if (obj.offsetParent)
		{
			while(1)
			{
				curLeft += obj.offsetLeft
			    if(!obj.offsetParent)
				  break;
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curLeft += obj.x;
	}
	return curLeft;
}

function findPosY(obj)
{
    var curtop = 0;
	//var elementTrace = '';
	if(obj)
	{
		if(obj.offsetParent)
		{
			while(1)
			{
			  //elementTrace += obj.id + ', ';
			  curtop += obj.offsetTop;
			  if(!obj.offsetParent)
				break;
			  obj = obj.offsetParent;
			}
		}
		else if(obj.y)
			curtop += obj.y;
	}
	//alert(elementTrace);
    return curtop;
}

function actualPageHeight() 
{
	var winHeight = 0;
	
	if (typeof(window.innerHeight) == 'number') 
		winHeight = window.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight) 
		winHeight = document.documentElement.clientHeight;
	else if (document.body && document.body.clientHeight) 
		winHeight = document.body.clientHeight;
		
	return winHeight;	
}

function actualPageWidth() 
{
	var winWidth = 0;
	
	if (typeof(window.innerWidth) == 'number') 
		winWidth = window.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth) 
		winWidth = document.documentElement.clientWidth;
	else if (document.body && document.body.clientWidth) 
		winWidth = document.body.clientWidth;
		
	return winWidth;	
}

function createMenu(menuDefinition, menuItems) 
{
	if(menuDefinition != null && menuItems != null)
	{
	  var navigationHTML = '';
	  var addBulletPoints = false;
	  var currentItemBulletPoint = false;
	  var useAllCaps = false;
	  var styleClass = '';
	  
	  if(menuDefinition['BL'] != null && menuDefinition['BL'] == true)
	  	addBulletPoints = true;
	  
	  if(menuDefinition['ALLCAPS'] != null && menuDefinition['ALLCAPS'] == true)
	  	useAllCaps = true;
		
	  var tblBorder = 0;
	  
//	  if(menuDefinition['LV'] == 1)
//		  tblBorder = 1;

	  for (rowCount=0; rowCount<menuItems.length; rowCount++)
	  {
			//navigationHTML += '<table id="' + menuDefinition['N'] + rowCount + '" cellpadding="0" cellspacing="0" border="0" width="400px"';
		if(menuDefinition['LV'] != null && menuDefinition['LV'] == 1)
			navigationHTML += '<table id="' + menuDefinition['N'] + rowCount + '" align="center" cellpadding="0" cellspacing="0" border="' + tblBorder + '"';
		else if(menuDefinition['LV'] != null && menuDefinition['LV'] == 2)
			navigationHTML += '<table id="' + menuDefinition['N'] + rowCount + '" cellpadding="0" cellspacing="0" border="' + tblBorder + '"'; //  width="' + subNavWidth + '"px
		
	    if(menuDefinition['StyleClass'] != null)
			styleClass = menuDefinition['StyleClass'];
			
	    if(styleClass!= '' && menuDefinition['LV'] != null && menuDefinition['LV'] != 2)
			navigationHTML += ' class="' + styleClass + '"';
			
		navigationHTML += '>' + lineBreak;
		navigationHTML += '<tbody>' + lineBreak;
		
	    if(menuDefinition['O'] != null && menuDefinition['O'] == 'Horizontal')
	      navigationHTML += '<tr>' + lineBreak;
		  
	    for (colCount=0; colCount<menuItems[rowCount].length; colCount++)
		{
		  if( (colCount==0) && (menuDefinition['showFirstItemBullet'] != null && menuDefinition['showFirstItemBullet'] == false) )
		    currentItemBulletPoint = false;
		  else
		    currentItemBulletPoint = addBulletPoints;
			
		 // if(menuDefinition['LV'] != null && menuDefinition['LV'] == 1 && colCount==0)
		 // 	navigationHTML += '<td><img src="/images/invisible.gif" width="1" height="50" /></td>';
		  navigationHTML += addItem(menuItems[rowCount][colCount], menuDefinition['N'], rowCount, colCount, useAllCaps, currentItemBulletPoint, menuDefinition['O'], menuDefinition['LV'], styleClass, menuItems[rowCount].length, colCount);
		}
		
	    if(menuDefinition['O'] != null && menuDefinition['O'] == 'Horizontal')
	      navigationHTML += '</tr>' + lineBreak;		  
	  
		navigationHTML += '</tbody>' + lineBreak;
	    navigationHTML += "</table>" + lineBreak;
		if(rowCount < menuItems.length-1)
		{
			//navigationHTML += '<table width="100%" cellpadding="0" cellspacing="0" border="0" class="topMenuSpacer"';
			navigationHTML += '<table cellpadding="0" cellspacing="0" border="0" class="topMenuSpacer"';
			navigationHTML += '<tbody>';
			navigationHTML += '<tr><td><img src="/images/invisible.gif" width="1" height="1"></td></tr>';
			navigationHTML += '</tbody>';
			navigationHTML += '</table>';
		}
	  }
	}
	return navigationHTML;
}

function addItem(itemDefinition, containerID, rowCount, colCount, allCaps, useBulletPoints, menuOrientation, menuLevel, styleClass, numberOfItems, itemNumber)
{
	var topNavigationItemHTML = '';
	var linkTagAdded = false;
	var isFirstItem = true;
	var hasTitle = false;
	var titleAdded = false;
	var itemTitle = '';
	var menuToShow = '';
	var curItemID = '';
	var noRoll = false;
	var linkURL = '';
	
	if(itemDefinition['NoRoll'] != null && itemDefinition['NoRoll'] != '')
		noRoll = itemDefinition['NoRoll'];
	
	if(itemNumber == 0 && menuLevel == 4)
		topNavigationItemHTML += '<tr><td height="1"><img src="/images/white.gif" width="140" height="1" border="0"></td></tr>';

	if(menuOrientation == 'Vertical')
		topNavigationItemHTML += '  <tr>';

	if(useBulletPoints)
		topNavigationItemHTML += '<td><img src="/images/bullet_top.gif"></td>';
						
	if(curPage.indexOf(itemDefinition['URL']) >= 0)
	{
		curItemID = activeItemsArray[menuLevel-1];
		activeItemIDs[menuLevel-1] = containerID + rowCount + colCount;
	}
	else
		curItemID = containerID + rowCount + colCount;
		
	topNavigationItemHTML += '  <td id="' + curItemID + '"';
	if(menuLevel == 1)
	{
		topNavigationItemHTML += ' valign="middle"';
		topNavIds[topNavIds.length] = curItemID;
	}
		
	if(menuLevel == 2 && styleClass!='')
		topNavigationItemHTML += ' class="' + styleClass + '"';
	else if(itemDefinition['StyleClass'] != null && itemDefinition['StyleClass'] != '')
		topNavigationItemHTML += ' class="' + itemDefinition['StyleClass'] + '"';
	
//	
	if(itemDefinition[eTitleString] != null) // && itemDefinition[aTitleString] != null)
	{
		if(allCaps)
			itemTitle = itemDefinition[titleString].toUpperCase();
		else
			itemTitle = itemDefinition[titleString];
		
		if(menuLevel == 2)
			level2MenuLabels[level2MenuLabels.length] = itemTitle;

		if(!noRoll)
		{
			if(itemDefinition['Show'] != null)
			{
				menuToShow = itemDefinition['Show'];
				if(menuLevel == 1)
					topNavigationItemHTML += ' onMouseOver="'
				else
					topNavigationItemHTML += ' onClick="'
					
				topNavigationItemHTML += 'javascript:';
					
				if(menuLevel == 1)
					topNavigationItemHTML += 'clearTimer();this.className=\'activeTopnavigation\';';
				topNavigationItemHTML += showMenuFuncName + '(\'' + menuToShow + '\', \'' + curItemID + '\', ' + (menuLevel+1) + ', \'' + itemTitle + '\');';
	
				if(menuLevel == 1)
				{
					topNavigationItemHTML += '"';
					topNavigationItemHTML += ' onMouseOut="'
					topNavigationItemHTML += 'javascript:hideMe();';
				}
				topNavigationItemHTML += '"';
			}
			else
			{
				menuToShow = 'noMenu';
				if(menuLevel == 1)
					topNavigationItemHTML += ' onMouseOver="'
				else
					topNavigationItemHTML += ' onClick="'
					
				topNavigationItemHTML += 'javascript:';
					
				if(menuLevel == 1)
					topNavigationItemHTML += 'clearTimer();this.className=\'activeTopnavigation\';';
					
				topNavigationItemHTML += showMenuFuncName + '(\'' + menuToShow + '\', \'' + curItemID + '\', ' + (menuLevel+1) + ', \'' + itemTitle + '\');';
				
				if(menuLevel == 1)
				{
					topNavigationItemHTML += '"';
					topNavigationItemHTML += ' onMouseOut="'
					topNavigationItemHTML += 'javascript:hideMe();';
				}
				topNavigationItemHTML += '"';
			}
		}
		
		topNavigationItemHTML += '>';
		
		if(itemDefinition['URL'] != null)
		{
			if(itemDefinition['URL'] == 'This will link to the corresponding Arabic Page. Please do not change this text.')
				topNavigationItemHTML += '<a href="' + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')-3) + linkURL + '">';
			else
			{
				if(curPage.indexOf(itemDefinition['URL']) >= 0)
				{
					preloadedMenu[0] = containerID;
					//alert(itemDefinition['URL'] + '\t' + preloadedMenu[0]);
					preloadedMenu[1] = curItemID;
					preloadedMenu[2] = menuLevel - 1;
					preloadedMenu[3] = containerID;
					
					if(itemDefinition['Show'] != null)
						preloadMenuCommand = showMenuFuncName + '(\'' + menuToShow + '\', \'' + curItemID + '\', ' + (menuLevel+1) + ', \'' + itemTitle + '\');'
				}
				
				linkURL = itemDefinition['URL'];
				if(itemTitle.toUpperCase() == 'LOGIN')
				{
					if(jsUserId>0)
					{
						linkURL = '/servlet/Logout';
						itemTitle = 'Logout';
					}
				}
					
				if(itemTitle.toUpperCase() == 'REGISTRATION' && jsUserId>0)
						itemTitle = 'Update Profile';
				
				topNavigationItemHTML += '<a href="' + linkURL + '"';
				
				if(itemDefinition['Target'] != null)
					topNavigationItemHTML += ' target="' + itemDefinition['Target'] + '"';
					
				topNavigationItemHTML += '>';
			}
		}
		else
		{
			//alert(itemTitle + '\t' + noRoll);
			if(!noRoll)
				topNavigationItemHTML += '<a href=\'javascript:;\'>';
		}
			
		topNavigationItemHTML += itemTitle;
		if(!noRoll)
			topNavigationItemHTML += '</a>';
	
	}
	else		
		topNavigationItemHTML += '<a href=\'javascript:;\'>&nbsp;</a>';
		
	topNavigationItemHTML += '</td>' + lineBreak;
	
	if(menuOrientation == 'Vertical')
	{
		topNavigationItemHTML += '  </tr>' + lineBreak;
		
		if(itemNumber<(numberOfItems-1))
			topNavigationItemHTML += '<tr><td height="18" id="' + menuToShow + '"><img src="/images/invisible.gif" width="100%" height="18" border="0"></td></tr>' + lineBreak;
	}

	return topNavigationItemHTML;
}

function addMenuExec(menuDefinition, menuItems)
{
	var navigationHTML = '';
	for(var items in menuDefinition)
	{
		if(items == 'LV' && menuDefinition[items] == 1)
		{
			level1MenuIds[level1MenuIds.length] = menuDefinition['N'];
			navigationHTML = createMenu(menuDefinition, menuItems);
			level1Menus[level1Menus.length] = navigationHTML;
			var navContainer = MM_findObj(topNavContainer);
			if(navContainer)
				navContainer.innerHTML = navigationHTML;
		}
		if(items == 'LV' && menuDefinition[items] == 2)
		{
			level2MenuIds[level2Menus.length] = menuDefinition['N'];
			navigationHTML = createMenu(menuDefinition, menuItems);
			level2Menus[level2Menus.length] = navigationHTML;
		}
	}
}

function showMenu(menuName, callerID, menuLevel, parentTitle)
{
	if(menuLevel == 2)
	{
		hideAll();

		for(var i=0; i<topNavIds.length; i++)
		{
			callerItem = MM_findObj(topNavIds[i]);
			if(callerItem)
			{
				if(callerID == topNavIds[i])
				{
					callerItem.className = activeItemsArray[0];
				}
				else
					callerItem.className = 'none';
			}
		}
	
		for(var i=0; i<level2Menus.length; i++)
		{
			if(menuName == level2MenuIds[i])
			{
				navContainer = MM_findObj(callerID);
				navHTMLContainer = MM_findObj(topSubnavContainer);
				if(navContainer)
				{
					navigationHTML = level2Menus[i];
					navHTMLContainer.style.top = (findPosY(navContainer) + 32) + 'px';
					if(js_Anchor == 'left')
						navHTMLContainer.style.left = (findPosX(navContainer)) + 'px';
					else
						navHTMLContainer.style.right = (actualPageWidth() - (findPosX(navContainer)) - MM_findObj(callerID).clientWidth - 1 - menuOffset) + 'px';
					setContent(navigationHTML, topSubnavContainer);
					navHTMLContainer.style.visibility = 'visible';
				}
				i=level2Menus.length+1;
			}
		}
	}
}

function clearTimer()
{
	if(menuTimeoutReference)
		clearTimeout(menuTimeoutReference);
}

function hideMe()
{
	menuTimeoutReference = setTimeout('hideAll();', timeoutInterval);	
}

function hideAll()
{
	navContainer = MM_findObj(topSubnavContainer);
	if(navContainer)
	{
		setContent('', navContainer);
		navContainer.style.visibility = 'hidden';
	}
	
	for(var i=0; i<topNavIds.length; i++)
	{
		navContainer = MM_findObj(topNavIds[i]);
		if(navContainer)
		{
			navContainer.className = 'none';
		}
	}
}

function hideMenu(parentID)
{
	navContainer = MM_findObj(topSubnavContainer);
	if(navContainer)
	{
		setContent('', navContainer);
		navContainer.style.visibility = 'hidden';
		parentObj = MM_findObj(parentID);
		if(parentObj)
			parentObj.className = 'none';
	}
	clearTimer();
}

function preloadMenusExec()
{
}

function addMenu(menuDefinition, menuItems)
{
	addMenuExec(menuDefinition, menuItems);
}

function preloadMenus()
{
	preloadMenusExec();
}

function setBanner()
{
	var bannerImg = MM_findObj('bannerImg');
	var imgSrc = curPage.substring(1, curPage.lastIndexOf('.'));
	//alert('/images/' + imgSrc + '.jpg');
	if(imgSrc != '/')
		bannerImg.style.backgroundImage = 'url(/images/' + imgSrc + '.jpg)';
}

function setContent(text,id)
{
	if (document.getElementById)
	{
		x = document.getElementById(id);
		if(x)
		{
			x.innerHTML = '';
			x.innerHTML = text;
		}
	}
	else if (document.all)
	{
		x = document.all[id];
		if(x)
			x.innerHTML = text;
	}
	else if (document.layers)
	{
		x = document.layers[id];
		if(x)
		{
			x.document.open();
			x.document.write(text);
			x.document.close();
		}
	}
}

function swapKCImage() 
{
	var objKCLink = MM_findObj('kcLink');
	if(objKCLink)
		objKCLink.src = '/images/kc2.gif'
}

function restoreKCImage() 
{
	var objKCLink = MM_findObj('kcLink');
	if(objKCLink)
		objKCLink.src = '/images/kc1.gif'
}

function setPageHeight()
{
	var heightFixer = MM_findObj('heightFixer');
	if(heightFixer)
	{
		var pageHeight = actualPageHeight();
		if(pageHeight > 576)
			heightFixer.height = pageHeight;
	}
	
	var mainTable = MM_findObj('mainTable');
	if(mainTable)
	{
		mainTable.style.display = 'block';
	}
	
}

function resizeHandler() 
{
	if (actualPageWidth() != origWidth || actualPageHeight() != origHeight) 
	{
		origWidth = actualPageWidth();
		origHeight = actualPageHeight();
	}
}
getPageDetails();
