var mFoldersLength = 0;
var mMaxHeight = 300;

//  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
// front-end function, previously embedded in header.html

var userRecipeAmount = 0;
var aryFolderName = new Array();
var aryFolderCount = new Array();
var aryFolderNum = new Array();
var aryAllRecipesName = new Array();
var aryAllRecipesURL = new Array();

var allMyRecipesXML = "http://localhost/food/menubar/all_recipes.xml"; //"http://staging.scrippsweb.com/kwsn255/food/myrecipes/xml/viewFolderItemsXml.do?userId=516610&appId=MYRECIPES&Submit=Submit+Query";

var foldersXML = "http://localhost/food/menubar/folders.xml"; //"http://kwsn255.scrippsweb.com/food2/myrecipes/xml/viewTagsXml.do?userId=516610&appId=MYRECIPES&Submit=Submit+Query";



function menuStartup()
{
    if (urUser && urUser.isLoggedIn)
    {
        document.getElementById("mrbLoggedOutBar").style.display = "none";
        document.getElementById("mrbLoggedInBar").style.display = "inline";
        var fn = urUser.getFirstName();
		if( fn!=null && fn!="null" && fn!="" ) {
			document.getElementById("txtUserName").innerHTML = ", " + fn;
		}
      //  UNCOMMENT THIS FOR RECIPE PULLDOWN AJAX VERSION
      //  document.getElementById("mrbSubMenu").style.top = "0px"; 
    }
    else
    {
        document.getElementById("mrbLoggedOutBar").style.display = "inline";
        document.getElementById("mrbLoggedInBar").style.display = "none";
        document.getElementById("txtUserName").innerHTML = "";
    }

} 

bMenuActive = false;

function activateMainMenu() 
{
  if (!bMenuActive)
  {
  // load and prepare main menu:
    loadXMLDoc(allMyRecipesXML, "parseAllMyRecipes()", "loadFolders()"); 
    buildMenus();
    bMenuActive = true;
  }
  showMenu('mrbMyRecipesMainMenu');
  return;
}

function loadFolders() {
	loadXMLDoc(foldersXML, "parseFolders()", "loadRecipes()");
}

var aryFolderNumCounter = 0;
function loadRecipes() {
	// ************************************************************* //
	// NOTE
	//
	// The 2 loadXMLDoc calls in this function will need adjustments
	// for the path to the XML file.
	// Right now they point to:
	// aryFolderNum[aryFolderNumCounter] + ".xml"
	//
	// but should get changed to something like:
	// "http://kwsn255.scrippsweb.com/food2/myrecipes/xml/viewTagCmpnsXml.do?userId=516610&appId=MYRECIPES&tagId=" +  aryFolderNum[aryFolderNumCounter] + "&Submit=Submit+Query"
	// ************************************************************* //
	if (aryFolderNumCounter != aryFolderNum.length - 1) {
		loadXMLDoc("http://localhost/food/menubar/" + aryFolderNum[aryFolderNumCounter] + ".xml", "parseFolderRecipe()", "loadRecipes()");
	} else {
		loadXMLDoc("http://localhost/food/menubar/" + aryFolderNum[aryFolderNumCounter] + ".xml", "parseFolderRecipe()", "buildMenus()");
	}
	aryFolderNumCounter++;
}

function buildMenus() 
{
  document.getElementById("mrbMainMenuLoading").style.display = "block";
  buildMainMenu("mrbMyRecipesMainMenuContainer");
  document.getElementById("txtNumMyRecipes").innerHTML = userRecipeAmount;
  document.getElementById("txtNumAllMyRecipes").innerHTML = userRecipeAmount;
}

//  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
// infrastructure functions, previous contents of mrb_menubar.js

function buildMainMenu(pElmnt) {
	var oContent = new Array();
	var mHeightCounter = 0;
	if (document.all) {
		document.getElementById("fn_header").style.overflowX = "hidden";
	}
	document.getElementById(pElmnt).style.position = "absolute";
	mFoldersLength = aryFolderName.length;
	aryFolderName = aryFolderName.sort();
	//mFoldersLength = 1;
	//for (var i=0; i<aryFolderName.length; i++) {
	for (var i=0; i<mFoldersLength; i++) {
		var folderNameAsID = aryFolderName[i];
		folderNameAsID = folderNameAsID.replace(/ /g, "");
		folderNameAsID = folderNameAsID.replace(/'/g, "");
		document.getElementById("mrbMenuLinksContainer").innerHTML += '<a class="myRecipesMainMenuWithArrow" href="#" onmouseover="buildSubMenu(this, ary' + folderNameAsID + 'RecipeName, ary' + folderNameAsID + 'RecipeURL);">' + aryFolderName[i].substring(aryFolderName[i], 20) + ' (<span id="' + aryFolderCount[i] + '">' + aryFolderCount[i] + '</span>)</a>';
		if (mHeightCounter >= 11) {
			document.getElementById(pElmnt).style.height = mMaxHeight + "px";
			document.getElementById(pElmnt).parentNode.style.height = mMaxHeight + "px";
			document.getElementById("btnScrollMRBMenuUp").style.display = "inline";
			document.getElementById("btnScrollMRBMenuDown").style.display = "inline";
			btnHeightPos = 15;
		} else {
			if (document.all) {
				document.getElementById(pElmnt).style.height = (((i + 1) * (i * 22)) + 22) + "px";
				document.getElementById(pElmnt).parentNode.style.height = (((i + 1) * (i * 22)) + 22) + "px";
			} else {
				document.getElementById(pElmnt).style.height = (((i + 1) * 32) + 22) + "px";
				document.getElementById(pElmnt).parentNode.style.height = (((i + 1) * 32) + 22) + "px";
			}
		}
		mHeightCounter++;
	}
	document.getElementById("testarea").innerHTML = document.getElementById("mrbMenuLinksContainer").parentNode.offsetHeight;
	
	
	document.getElementById("btnScrollMRBMenuUp").style.top = "0px";
	// make this according to div.mrbScrollButtons in the menubar css
	document.getElementById("btnScrollMRBMenuDown").style.top = parseInt(document.getElementById(pElmnt).parentNode.style.height) - btnHeightPos + "px";
	document.getElementById(pElmnt).style.top = btnHeightPos + "px";
}

function buildSubMenu(pElmnt, pRecipeListName, pRecipeListURL) {
	if (pRecipeListName.length == 0) {
		subMenuActive = false;
		hideMenu();
		return false;
	}
	var mTotalRecipes = 0;
	var mArrayToFill = new Array();
	//document.getElementById("mrbSubMenu").style.top = ((pElmnt.offsetTop - pElmnt.parentNode.scrollTop) + pElmnt.parentNode.offsetTop) + "px";
	if (document.all) {
		document.getElementById("mrbSubMenu").style.top = (findPosY(pElmnt) - 16) + "px";
	} else {
		document.getElementById("mrbSubMenu").style.top = (findPosY(pElmnt) - 8) + "px";
	}
	document.getElementById("mrbSubMenu").style.display = "inline";
	var oContent = new Array();
	for (var h = document.getElementById("mrbSubMenu").childNodes.length - 1; h >= 0; h--) {
		document.getElementById("mrbSubMenu").removeChild(document.getElementById("mrbSubMenu").childNodes[h]);
	}
	for (var i=0; i<pRecipeListName.length; i++) {
		document.getElementById("mrbSubMenu").innerHTML += '<a class="mrbSubMenu" href="' + pRecipeListURL[i] + '" onmouseover="showMenu(\'mrbSubMenu\');" onclick="mainMenuActive = false; subMenuActive = false; hideMenu();">' + pRecipeListName[i] + '</a>';
	}
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	return curtop;
}

var btnHeightPos = 0;
var yAmount = 0;
var scrollInterval = "";

function scrollMRBMenu(pDirection) {
	switch (pDirection) {
		case "up":
			yAmount = -btnHeightPos;
			break;
		case "dn":
			yAmount = btnHeightPos;
			break;
	}
	scrollInterval = setInterval("doScroll('" + pDirection + "')", 100);
}

function doScroll(pDirection) {
	var upTop = 0;
	switch (pDirection) {
		case "up":
			upTop = (((document.getElementById("mrbMenuLinksContainer").offsetHeight) + btnHeightPos) - mMaxHeight);
			if (parseInt(document.getElementById("mrbMyRecipesMainMenuContainer").style.top) > -upTop)
				document.getElementById("mrbMyRecipesMainMenuContainer").style.top = parseInt(document.getElementById("mrbMyRecipesMainMenuContainer").style.top) + yAmount + "px";
			break;
		case "dn":
			if (parseInt(document.getElementById("mrbMyRecipesMainMenuContainer").style.top) < btnHeightPos)
				document.getElementById("mrbMyRecipesMainMenuContainer").style.top = parseInt(document.getElementById("mrbMyRecipesMainMenuContainer").style.top) + yAmount + "px";
			break;
	}
	//document.getElementById("testarea").innerHTML = upTop + "::" + document.getElementById("mrbMenuLinksContainer").offsetHeight + "::" + document.getElementById("mrbMyRecipesMainMenuContainer").offsetHeight;
}

var mainMenuActive = false;
var subMenuActive = false;
var mainMenuTimer;
var subMenuTimer;

function checkMenuClose(pElmnt) {
	switch (pElmnt) {
		case "mrbMyRecipesMainMenu":
			if (!mainMenuActive) mainMenuTimer = setTimeout("hideMenu()", 1000);
			break;
		case "mrbSubMenu":
			if (!subMenuActive) subMenuTimer = setTimeout("hideMenu()", 1000);
			break;
	}
}

function showMenu(pElmnt) {
	document.getElementById(pElmnt).style.display = "inline";
	switch (pElmnt) {
		case "mrbMyRecipesMainMenu":
			mainMenuActive = true;
			document.getElementById("mrbMyRecipesMainMenu").onmouseover = function() {
				showMenu("mrbMyRecipesMainMenu");
				clearTimeout(mainMenuTimer);
				clearTimeout(subMenuTimer);
			}
			document.getElementById("mrbMyRecipesMainMenu").onmouseout = function() {
				if (subMenuActive==false) {
					mainMenuActive = false;
					checkMenuClose("mrbMyRecipesMainMenu");
				}
			}
			break;
		case "mrbSubMenu":
			document.getElementById("mrbSubMenu").onmouseover = function() {
				showMenu("mrbSubMenu");
				showMenu("mrbMyRecipesMainMenu");
				mainMenuActive = true;
				subMenuActive = true;
				clearTimeout(mainMenuTimer);
				clearTimeout(subMenuTimer);
			}
			document.getElementById("mrbSubMenu").onmouseout = function() {
				subMenuActive = false;
				checkMenuClose("mrbSubMenu");
			}
			break;
	}
}

function hideMenu() {
       document.getElementById("mrbMainMenuLoading").style.display = "none";
       if (mainMenuActive == true) {
		if (subMenuActive == true) {
		} else {
 			document.getElementById("mrbSubMenu").style.display = "none";
			document.getElementById("mrbMyRecipesMainMenu").style.display = "none";
		}
	} else {
		document.getElementById("mrbMyRecipesMainMenu").style.display = "none";
		document.getElementById("mrbSubMenu").style.display = "none";
	}
}
