// -------------------------------------
// KNOWLEDGE MAP NAVIGATION MENUS LAYOUT
// -------------------------------------
// Copyright (c) 2004-2007 The Salamander Organization Ltd.  All Rights Reserved.
//
// THIS WORK IS SUBJECT TO U.K. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES.
//
// DISCLAIMER:
//
// The Salamander Organization Ltd. (hereto referred as "Salamander") makes no representations or warranties
// with respect to the contents or use of this code, and specifically disclaims any express or implied
// warranties of merchantability or fitness for any particular purpose.  Further, Salamander reserves the right
// to revise this publication and to make changes to its content, at any time, without obligation to notify any
// person or entity of such revisions or changes.
//
// Further, Salamander makes no representations or warranties with respect to any software, and specifically
// disclaims any express or implied warranties of merchantability or fitness for any particular purpose.  Salamander
// reserves the right to make changes to any and all parts of the software, at any time, without obligation to notify
// any person or entity of such changes.
//
// Inclusion of the above notice does not necessarily imply publication.

// #############################################################
// ### CREATE THE NAVIGATION AREAS WE NEED FOR THIS TEMPLATE ###

// -- each area needs a matching template block with an id of the form "areanameNavigationBlock"

CreateNavigationArea("topnav", "<b>&#160;-&#160;</b>");  // default top nav

CreateNavigationArea("sidenav", "<div style='font-size:10px;'>&#160;</div>");  // default side nav
CreateNavigationArea("sidenav_index", "<div style='font-size:10px;'>&#160;</div>");  // side nav for index pages
CreateNavigationArea("sidenav_search", "<div style='font-size:10px;'>&#160;</div>");  // side nav for the search page


// #####################################
// ### LAYOUTS FOR NAVIGATION BLOCKS ###

// function to create the start html for a side navigation bar block
function LayoutSideNavBlockOpen(blockTitle)
{
	var htmlString = "<div class='backgroundColor1'>" +
					"<div class=\"backgroundColor3\" >" +
					"            <div style=\"float:left;\"><img src='" + pageUrlPath + "Images/corner_left.gif' /></div>" +
					"            <div style=\"float:right;\"><img src='" + pageUrlPath + "Images/corner_right.gif' /></div>" +
					"            <span class='sidebarTitle'>" + blockTitle + "</span>" +
					"</div>" +
					"	<ul class=\"sidebar backgroundColor1\" >"; 
	
	return htmlString;
}

// function to create the end html for a side navigation bar block
function LayoutSideNavBlockClose()
{
	var htmlString = "  </ul>" +
					 "      <div  class='backgroundColor3' style=\"height:14px;\">" +
					 "            <div style=\"float:left;\"><img src='" + pageUrlPath + "Images/corner_bottom_left.gif' /></div>" +
					 "            <div style=\"float:right;\"><img src='" + pageUrlPath + "Images/corner_bottom_right.gif' /></div>" +
					 "      </div>" +
					 "</div>";
	
	return htmlString;
}


// ###################################################
// ### LAYOUTS FOR DROP DOWN TOP NAVIGATION BLOCKS ###

var defaultMenuWidth = 200;
var defaultMenuHeight = 120;

var ddMenuListPrefix = "links_";

// function to create the start html for a top drop down menu block
function LayoutTopNavBlockOpen(blockTitle, menuWidth, menuHeight)
{
	// set default drop down width and height if not provided
	if (!menuWidth) menuWidth = defaultMenuWidth;
	if (!menuHeight) menuHeight = defaultMenuHeight;
	
	// create a new drop down menu
	var ddMenu = CreateDropDownMenu(blockTitle, menuHeight, menuWidth);
	
	var htmlString = "<b><a id='" + ddMenu.menuItemId + "' class='topbar' " + 
					 "href='#' " +
					 "onClick='menuClicked(\"" + ddMenu.menuItemId + "\");' " + 
					 "onMouseOut='dropdownBlurred(\"" + ddMenu.dropDownId + "\");' " +
					 "onMouseOver='dropdownFocused(\"" + ddMenu.dropDownId + "\");'>" + 
					 blockTitle + 
					 "</a></b>" +
					 "<div id='" + ddMenu.dropDownId + "' class='dropDownMenu' " +
					 "style='height:" + menuHeight + ";width" + menuWidth + "' " + 
					 "onMouseOver='dropdownFocused(\"" + ddMenu.dropDownId + "\");' " +
					 "onMouseOut='dropdownBlurred(\"" + ddMenu.dropDownId + "\");'>" +
					 "<ul id='" + ddMenuListPrefix + ddMenu.dropDownId + "' class='backgroundColor1'>";
	
	return htmlString;
}

// function to create the end html for a top drop down menu block
function LayoutTopNavBlockClose()
{
	var htmlString = "</ul></div>";
	
	return htmlString;
}


// #############################################################
// ### LAYOUTS FOR STANDARD NAVIGATION LINKS AND BLOCK ITEMS ###

// function to create the start of a side navigation without a bullet in front of the link
function LayoutSideNavLinkOpen(useBullet, domId, textAlign)
{
	var bulletString = "";
	
	if (useBullet)
	{
		bulletString = "list-style:disc outside; margin-left:20px;";
	}
	else
	{
		bulletString = "list-style:none outside;";
	}

	var domIdString = "";
	
	if (domId == "" || !domId)
	{
		domIdString = "";
	}
	else
	{
		domIdString = " id='" + domId + "'";
	}
	
	var alignString = "";
	
	if (textAlign == "" || !textAlign)
	{
		alignString = "";
	}
	else
	{
		alignString = "text-align:" + textAlign + ";";
	}

	var htmlString = "<li " +domIdString +" style=\"" + bulletString + alignString + "\" >";

	return htmlString;
}

// function to create the end of a side navigation link
function LayoutSideNavLinkClose()
{
	var htmlString = "</li>";
	
	return htmlString;
}


// ########################################################
// ### LAYOUTS SPECIFIC TO THE KNOWLEDGE RESOURCE BLOCK ###

// function to open a knowledge resource
function LayoutSideNavLinkOpen_KnowledgeResource(imageUrl, imageDescription, resourceDomId)
{
	var imageDescString = "";
	
	if (imageDescription == "" || !imageDescription)
	{
		imageDescString = "";
	}
	else
	{
		imageDescString = " title='" + imageDescription + "' alt=''";
	}
	
	var imageString = "";
	
	if (imageUrl == "" || !imageUrl)
	{
		imageString = "&#8226;";  // if no image, use a bullet point
	}
	else
	{
		imageString = "<img style=\"border:none;margin:2px;\" "+ imageDescString + " src=\"" + imageUrl + "\" >";
	}

	var htmlString = "<li id=\"" + resourceDomId + "\" style=\"display:none;\">" +
					 imageString; 
					 
	return htmlString;
}

// function to create the end of a knowledgeresource
function LayoutSideNavLinkClose_KnowledgeResource()
{
	var htmlString = "  </li>";
	
	return htmlString;
}

// function to open a knowledge category
function LayoutKnowledgeCategoryOpen(categoryDomId, categoryName)
{
	var htmlString = "<li id=\"" + categoryDomId + "\" title='Show/Hide " + categoryName + " Resources' class='krCategoryBar'>" +
			 "	<a style='cursor:hand' href='#' onclick=\"javascript:ToggleResourceDisplay('" + categoryDomId + "');\">";

	return htmlString;
}

// function to close a knowledge category
function LayoutKnowledgeCategoryClose()
{
	var htmlString = "	</a>" +
			 "</li>";
	
	return htmlString;
}


// ###############################################################
// ### FACADES TO HELP ADDING NAVIGATION LINKS AND BLOCK ITEMS ###

// -- TOP NAVIGATION

// [facade to AddNavigationLink()]  for top navigation links
function AddNavigationLink_Top(linkName, linkUrl, toolTipText, linkIdText, isOutsideKMap)
{
	AddNavigationLink("top", linkName, linkUrl, "", "", toolTipText, linkIdText, isOutsideKMap);
}

// -- ON THIS PAGE... SIDE NAVIGATION

// [facade to AddNavigationLink()]  for top navigation links
function AddNavigationLink_OnThisPage(sectionText, sectionTextId, cellIdText, linkIdText)
{
	AddNavigationLink("page", sectionText, DoNavClickEvent(sectionTextId), LayoutSideNavLinkOpen(true, cellIdText), LayoutSideNavLinkClose(), "", linkIdText, true);
}

// [facade to AddBlockItem()]  for "On this page..." block items
function AddBlockItem_OnThisPage(itemText, toolTipText, overrideClassIdText)
{
	AddBlockItem("page", "", itemText, LayoutSideNavLinkOpen(false), LayoutSideNavLinkClose(), toolTipText, "", overrideClassIdText);
}

// -- CONTROL THIS PAGE... SIDE NAVIGATION

// [facade to AddNavigationLink()]  for "Control this page..." navigation links
function AddNavigationLink_Control(linkName, linkUrl, toolTipText, linkIdText, isOutsideKMap)
{
	AddNavigationLink("control", linkName, linkUrl, LayoutSideNavLinkOpen(true), LayoutSideNavLinkClose(), toolTipText, linkIdText, isOutsideKMap);
}

// [facade to AddNavigationLink()]  for "Control this page..." navigation links
function AddNavigationLink_ControlIndex(linkName, linkUrl, toolTipText, linkIdText, isOutsideKMap)
{
	AddNavigationLink("control_index", linkName, linkUrl, LayoutSideNavLinkOpen(true), LayoutSideNavLinkClose(), toolTipText, linkIdText, isOutsideKMap);
}

// -- SEARCH SIDE NAVIGATION

// [facade to AddNavigationLink()]  for "Search" navigation links
function AddNavigationLink_Search(linkName, linkUrl, toolTipText, linkIdText, isOutsideKMap)
{
	AddNavigationLink("search", linkName, linkUrl, LayoutSideNavLinkOpen(true), LayoutSideNavLinkClose(), toolTipText, linkIdText, isOutsideKMap);
}

// [facade to AddBlockItem()]  for "Search" block items
function AddBlockItem_Search(itemName, itemText, toolTipText, linkIdText, overrideClassIdText)
{
	AddBlockItem("search", itemName, itemText, LayoutSideNavLinkOpen(false, "", "center"), LayoutSideNavLinkClose(), toolTipText, linkIdText, overrideClassIdText);
}

// -- SEE ALSO... SIDE NAVIGATION

// [facade to AddNavigationLink()]  for "See also..." navigation links
function AddNavigationLink_SeeAlso(linkName, linkUrl, toolTipText, linkIdText, isOutsideKMap)
{
	AddNavigationLink("seealso", linkName, linkUrl, LayoutSideNavLinkOpen(true), LayoutSideNavLinkClose(), toolTipText, linkIdText, isOutsideKMap);
}

// [facade to AddBlockItem()]  for "See also..." block items
function AddBlockItem_SeeAlso(itemName, itemText, toolTipText, linkIdText, overrideClassIdText)
{
	AddBlockItem("seealso", itemName, itemText, LayoutSideNavLinkOpen(false), LayoutSideNavLinkClose(), toolTipText, linkIdText, overrideClassIdText);
}

// -- USER DEFINED SIDE NAVIGATION

// [facade to AddNavigationLink()]  for the user-defined block navigation links
function AddNavigationLink_User(linkName, linkUrl, toolTipText, linkIdText, isOutsideKMap)
{
	AddNavigationLink("user", linkName, linkUrl, LayoutSideNavLinkOpen(true), LayoutSideNavLinkClose(), toolTipText, linkIdText, isOutsideKMap);
}

// [facade to AddBlockItem()]  for the user-defined block items
function AddBlockItem_User(itemName, itemText, toolTipText, linkIdText, overrideClassIdText)
{
	AddBlockItem("user", itemName, itemText, LayoutSideNavLinkOpen(false), LayoutSideNavLinkClose(), toolTipText, linkIdText, overrideClassIdText);
}


// #######################################
// ### FACADES FOR KNOWLEDGE RESOURCES ###

// -- KNOWLEDGE RESOURCES NAVIGATION

// [facade to AddNavigationLink()]  for Knowledge Resources
function AddNavigationLink_KnowledgeResource(linkName, linkUrl, toolTipText, resourceDomId, imageUrl, imageDescription)
{
	AddNavigationLink("knowledge", linkName, linkUrl, LayoutSideNavLinkOpen_KnowledgeResource(imageUrl, imageDescription, resourceDomId), LayoutSideNavLinkClose_KnowledgeResource(), toolTipText, "", true);
}

// -- KNOWLEDGE CATEGORIES

// [facade to AddBlockItem()]  for Knowledge Resource Categories
function AddBlockItem_KnowledgeCategory(categoryDomId, categoryName)
{
	var suffix = "&nbsp;&darr;";
	AddBlockItem("knowledge", "", categoryName + suffix, LayoutKnowledgeCategoryOpen(categoryDomId, categoryName), LayoutKnowledgeCategoryClose(), "", "", "krCategory");
}

