
/**
 * JBC_DynaMenu - Dynamic Menus and PopupMenus for HTML - Version 1.0
 * by Jean-Bernard Clerin, July 2002
 * Copyright (c) 2001-2002 JBCSolutions.
 *
 * JBC grants you a royalty free license to use or modify this
 * software provided that this copyright notice appears on all copies.
 * This software is provided "AS IS," without a warranty of any kind.
 * You are not allowed to modify, remove or change this header.
 * www.JBCSolutions.com
 */

/*
 * For compactness reasons, the documentation for this source code has
 * been removed and exported to a separate HTML file.
 */

var JBC_Menus = new Array();
var JBC_CloseCurrentMenu = false;
var JBC_CloseMenuRequestID = 0;
var JBC_DeferMilliSeconds = 750;
var JBC_InnerHTML = "";
var JBC_MenuName = "";
var JBC_BackgroundColor = "#A0A0A0";
var JBC_HoverColor = "#C0C0C0";
var JBC_DefaultStyle = "";
var JBC_Vertical = false;
var JBC_DefaultBorder = "border-left: 1px solid #F0F0FF;border-top: 1px solid #F0F0FF;border-right: 1px solid #404080;border-bottom: 1px solid #404080;"
var JBC_Border = JBC_DefaultBorder;
var JBC_SubMenuIcon = "&nbsp;<Span Style='font-family:Webdings'>4</Span>";
var JBC_BlendTransition = true;

function JBC_OpenSubMenu(tagOwner,parentId,menuId)
{
 var menu = JBC_GetObjectFromId(menuId);
 if (menu != null)
    {
     JBC_CloseCurrentMenu = false;
     var parent = JBC_GetObjectFromId(parentId);
     while (JBC_Menus.length > 0)
         {
          if (JBC_Menus[JBC_Menus.length-1] == menu || JBC_Menus[JBC_Menus.length-1] == parent)
              break;
          JBC_Menus[JBC_Menus.length-1].style.visibility = 'hidden'
          JBC_Menus.length--;
         }
     var owner = JBC_GetObjectFromId(parentId);
     var max = document.body.offsetWidth - 30;
     var overload = 3;
     if (document.all)
         overload = 6;
     var transition;
     if ((parseInt(owner.style.left) + owner.offsetWidth + menu.offsetWidth) > max)
        {
         menu.style.left = parseInt(owner.style.left) - menu.offsetWidth + overload;
         transition = 7;
        }
     else
        {
         menu.style.left = parseInt(owner.style.left) + owner.offsetWidth - overload;
         transition = 6;
        }
     menu.style.top = owner.offsetTop + tagOwner.offsetTop - 2;
     menu.style.zIndex = JBC_Menus.length+20480;
     JBC_DoTransition(menu,transition);
     JBC_Menus[JBC_Menus.length++] = menu;
    }
}

function JBC_OpenMenu(tagOwner,menuId,vertical)
{
 var menu = JBC_GetObjectFromId(menuId);
 if (menu != null)
    {
     JBC_CloseSubMenu(menu);
     if (JBC_Menus.length > 0 && JBC_Menus[JBC_Menus.length-1] != menu)
         JBC_CloseAllMenus();
     var max = document.body.offsetWidth - 30;
     var x = tagOwner.offsetLeft;
     var y = tagOwner.offsetTop;
     var transition;
     if (vertical != null && vertical == true)
        {
         transition = 6;
         x += tagOwner.offsetWidth;
         if ((x + menu.offsetWidth) > max)
             x = tagOwner.offsetLeft - menu.offsetWidth;
        }
     else
        {
         transition = 5;
         y += tagOwner.offsetHeight;
         if ((x + menu.offsetWidth) > max)
             x = tagOwner.offsetLeft + tagOwner.offsetWidth - menu.offsetWidth;
        }
     menu.style.left = x;
     menu.style.top = y;
     menu.style.zIndex = JBC_Menus.length+20480;
     JBC_DoTransition(menu,transition);
     JBC_Menus[JBC_Menus.length++] = menu;
    }
}

function JBC_OpenPopupMenu(e,menuId)
{
 if (JBC_IsValidBrowser())
    {
     JBC_CloseAllMenus();
     var transition = 19;
     var menu = JBC_GetObjectFromId(menuId);
     var x = 0;
     var y = 0;
     if (menu != null)
        {
         if (e.pageX)
            {
             x = e.pageX;
             y = e.pageY;
            }
         else if (e.clientX)
            {
             x = e.clientX + document.body.scrollLeft;
             y = e.clientY + document.body.scrollTop;
            }
         var max = document.body.offsetWidth;
         if ((x + menu.offsetWidth) > max)
              x = x - menu.offsetWidth;
         menu.style.left = x;
         menu.style.top = y;
         menu.style.zIndex = JBC_Menus.length+20480;
         JBC_DoTransition(menu,transition);
         JBC_Menus[JBC_Menus.length++] = menu;
         JBC_CloseCurrentMenu = true;
         JBC_CloseMenu(JBC_DeferMilliSeconds*2);
        }
    }
}

function JBC_IsValidBrowser()
{
 if (document.all || document.getElementById)
     return true;
 return false;
}

function JBC_GetObjectFromId(id)
{
 var menu = null;
 if (document.getElementById)
     menu = document.getElementById(id);
 else if (document.all)
     menu = document.all[id];
 else if (document.layers)
     menu = document.layers[id];
 return menu;
}

function JBC_CloseSubMenu(menu)
{
 if (JBC_CloseCurrentMenu)
   {
    JBC_CloseCurrentMenu = false;
    while (JBC_Menus.length > 0)
      {
       if (JBC_Menus[JBC_Menus.length-1] == menu)
           break;
       JBC_Menus[JBC_Menus.length-1].style.visibility = 'hidden'
       JBC_Menus.length--;
      }
   }
}

function JBC_CloseMenu(deferMilliSeconds)
{
 var milliSeconds = JBC_DeferMilliSeconds;
 if (deferMilliSeconds != null)
     milliSeconds = deferMilliSeconds;
 JBC_CloseCurrentMenu = true;
 JBC_CloseMenuRequestID++;
 setTimeout("JBC_ExecuteCloseMenu(" + JBC_CloseMenuRequestID + ")",milliSeconds);
}

function JBC_ExecuteCloseMenu(reqID)
{
 if (JBC_CloseCurrentMenu && JBC_CloseMenuRequestID == reqID)
     JBC_CloseAllMenus();
}

function JBC_CloseAllMenus()
{
 JBC_CloseCurrentMenu = false;
 while (JBC_Menus.length > 0)
   {
    JBC_Menus[JBC_Menus.length-1].style.visibility = 'hidden'
    JBC_Menus.length--;
   }
}

function JBC_GotoURL(url,targetFrame)
{
 JBC_CloseAllMenus();
 if (targetFrame == null || targetFrame == "" || targetFrame == "null")
     document.location = url;
 else if (targetFrame == "_top")
     parent.top.location = url;
 else if (targetFrame == "_parent")
     parent.location = url;
 else if (eval("parent." + targetFrame))
     eval("parent." + targetFrame + ".location.replace('" + url + "')");
}

function JBC_DoTransition(menu,transition)
{
 if (document.all && menu.filters)
    {
     var item = 0;
     if (!JBC_GetBlendTransition())
        {
         item = 1;
         menu.filters[item].transition = transition;
        }
     var Transition_is_playing = 2;
     if (menu.filters[item] && menu.filters[item].status != Transition_is_playing)
        {
         menu.filters[item].apply();
         menu.style.visibility = 'visible';
         menu.filters[item].play();
        }
     else
        {
         menu.style.visibility = 'visible';
        }
    }
 else
    {
     menu.style.visibility = 'visible';
    }
}

function JBC_SetBlendTransition(option)
{
 if (document.all && document.getElementById)
     JBC_BlendTransition = option;
 else
     JBC_BlendTransition = false;
}

function JBC_GetBlendTransition()
{
 if (document.all && document.getElementById)
     return JBC_BlendTransition;
 return false;
}

function JBC_BuilderSetStyle(style)
{
 if (style == null)
    JBC_DefaultStyle = "";
 else
    JBC_DefaultStyle = style;
}

function JBC_BuilderSetColors(backgroundColor,hoverColor)
{
 JBC_BackgroundColor = backgroundColor;
 JBC_HoverColor = hoverColor;
}

function JBC_BuilderSetBorder(border)
{
 if (border != null)
     JBC_Border = border;
 else
     JBC_Border = JBC_DefaultBorder;
}

function JBC_BuilderStartMenu(name)
{
 JBC_MenuName = name;
 JBC_InnerHTML += "<Table Cellpadding=0 Cellspacing=0 Id='" + name + "'"
 JBC_InnerHTML += " onMouseOver='JBC_CloseSubMenu(this)' onMouseOut='JBC_CloseMenu()' ";
 JBC_InnerHTML += " style='background-color: " + JBC_BackgroundColor  + ";"
 JBC_InnerHTML += "  position: absolute; top: 0px; left: 0px; z-index: 1;"
 JBC_InnerHTML += "  visibility: hidden;"
 JBC_InnerHTML += "  cursor: default;"
 JBC_InnerHTML += "  padding: 5 0 5 0; "
 JBC_InnerHTML += "  filter: BlendTrans(duration=0.5) revealTrans(Duration=0.3,Transition=1)"
 JBC_InnerHTML += "  progid:DXImageTransform.Microsoft.Shadow(color=#666666, Direction=135, Strength=4);"
 JBC_InnerHTML += "  " + JBC_Border;
 JBC_InnerHTML += "'>";
 JBC_InnerHTML += "<Tr><Td><Table Cellpadding=0 Cellspacing=0 Style='" + JBC_DefaultStyle + "'>"
}

function JBC_BuilderEndMenu()
{
 JBC_InnerHTML += "</Table></Td></Tr></Table>"
}

function JBC_BuilderApplyMenu()
{
 if (document.getElementById)
     document.body.innerHTML = document.body.innerHTML + JBC_InnerHTML;
 else if (document.body && document.body.insertAdjacentHTML)
     document.body.insertAdjacentHTML('afterBegin',JBC_InnerHTML);
 JBC_InnerHTML = "";
}

function JBC_BuilderLinkToSubMenu(string,subMenu,header)
{
 JBC_InnerHTML += "<Tr onMouseOver='" + 'this.bgColor="' + JBC_HoverColor + '";';
 JBC_InnerHTML += 'JBC_OpenSubMenu(this,"' +JBC_MenuName + '","' + subMenu + '");';
 JBC_InnerHTML += "' onMouseOut='this.bgColor=" + '"' + JBC_BackgroundColor + '";' + "'>";
 if (header == null)
     JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 10;" + JBC_DefaultStyle + "'>&nbsp;</Td>";
 else
     JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 10;" + JBC_DefaultStyle + "'>" + header + "</Td>";
 JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 0;" + JBC_DefaultStyle + "'>" + string + "</Td>";
 JBC_InnerHTML += "<Td Nowrap Style='padding: 0 10 0 0;'>" + JBC_SubMenuIcon + "</Td>";
 JBC_InnerHTML += "</Tr>";
}

function JBC_BuilderLinkToUrl(string,href,targetFrame,header)
{
 var aTargetFrame = null;
 if (targetFrame != null)
     aTargetFrame = targetFrame;
 JBC_InnerHTML += "<Tr onMouseUp='JBC_CloseAllMenus();'";
 JBC_InnerHTML += " Style='cursor: pointer;'";
 JBC_InnerHTML += " onClick='JBC_GotoURL(" + '"' + href + '","' + aTargetFrame + '"' + ");'";
 JBC_InnerHTML += " onMouseOver='this.bgColor=" + '"' + JBC_HoverColor + '"' + ";'"
 JBC_InnerHTML += " onMouseOut='this.bgColor=" + '"' + JBC_BackgroundColor + '"' + ";'>"
 if (header == null)
     JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 10;" + JBC_DefaultStyle + "'>&nbsp;</Td>";
 else
     JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 10;" + JBC_DefaultStyle + "'>" + header + "</Td>";
 JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 0;" + JBC_DefaultStyle + "'>" + string + "</Td>";
 JBC_InnerHTML += "<Td Nowrap Style='padding: 0 10 0 0;'>&nbsp;</Td>";
 JBC_InnerHTML += "</Tr>";
}

function JBC_BuilderOnClick(string,handler,header,closeAllMenus)
{
 JBC_InnerHTML += "<Tr";
 if (closeAllMenus == null || closeAllMenus == true)
     JBC_InnerHTML += " onMouseUp='JBC_CloseAllMenus();'";
 JBC_InnerHTML += " onClick=" + '"' + handler + ';"';
 JBC_InnerHTML += " onMouseOver='this.bgColor=" + '"' + JBC_HoverColor + '"' + ";'"
 JBC_InnerHTML += " onMouseOut='this.bgColor=" + '"' + JBC_BackgroundColor + '"' + ";'>"
 if (header == null)
     JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 10;" + JBC_DefaultStyle + "'>&nbsp;</Td>";
 else
     JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 10;" + JBC_DefaultStyle + "'>" + header + "</Td>";
 JBC_InnerHTML += "<Td Nowrap Style='padding: 0 0 0 0;" + JBC_DefaultStyle + "'>" + string + "</Td>";
 JBC_InnerHTML += "<Td Nowrap Style='padding: 0 10 0 0;'>&nbsp;</Td>";
 JBC_InnerHTML += "</Tr>"
}

function JBC_BuilderStartMenuBar(name,vertical)
{
 JBC_MenuName = name;
 if (vertical == null || vertical == false)
    {
     JBC_Vertical = false;
     JBC_InnerHTML += "<Table Border=0 Cellpadding=0 Cellspacing=6>"
    }
 else
    {
     JBC_Vertical = true;
     JBC_InnerHTML += "<Table Border=0 Cellpadding=0 Cellspacing=2>"
    }
 JBC_InnerHTML += "<Tr Style='background-color: " + JBC_BackgroundColor  + ";'"
 JBC_InnerHTML += " onMouseOut='JBC_CloseMenu();'>";
}

function JBC_BuilderEndAndApplyMenuBar()
{
 JBC_InnerHTML += "</Tr></Table>"
 var stringID = JBC_GetObjectFromId(JBC_MenuName);
 if (stringID != null)
    {
     if (document.getElementById)
         stringID.innerHTML = stringID.innerHTML + JBC_InnerHTML;
     else if (stringID && stringID.insertAdjacentHTML)
         stringID.insertAdjacentHTML('afterBegin',JBC_InnerHTML);
    }
 JBC_InnerHTML = "";
}

function JBC_BuilderItemMenuBar(string,subMenu)
{
 if (JBC_Vertical)
    {
     JBC_InnerHTML += "<Tr Style='background-color: " + JBC_BackgroundColor  + ";'"
     JBC_InnerHTML += " onMouseOut='JBC_CloseMenu();'>";
    }
 JBC_InnerHTML += "<Td Nowrap Valign='middle' Align='center'";
 JBC_InnerHTML += " Style='position: relative;"
 JBC_InnerHTML += "  cursor: default;"
 JBC_InnerHTML += "  padding: 3 3 3 3;"
 JBC_InnerHTML += "  filter: progid:DXImageTransform.Microsoft.Shadow(color=#666666, Direction=135, Strength=4);"
 JBC_InnerHTML += "  " + JBC_Border;
 JBC_InnerHTML += "  " + JBC_DefaultStyle + "'";
 JBC_InnerHTML += " onMouseOver='this.bgColor=" + '"' + JBC_HoverColor + '";'
 JBC_InnerHTML += " JBC_OpenMenu(this," + '"' + subMenu + '"'
 if (JBC_Vertical)
     JBC_InnerHTML += ",true);'"
 else
     JBC_InnerHTML += ");'"
 JBC_InnerHTML += " onMouseOut='this.bgColor=" + '"' + JBC_BackgroundColor + '"' + ";'>&nbsp;"
 JBC_InnerHTML += string + "&nbsp;</Td>";
}

function JBC_BuilderSeparator(size)
{
 JBC_InnerHTML += "<Td Colspan=3><Hr";
 if (size != null)
    JBC_InnerHTML += " Size='" + size + "'";
 JBC_InnerHTML += "></Td>";
}

function JBC_BuilderNote(string,all)
{
 if (all != null && all == true)
    {
     JBC_InnerHTML += "<Td Colspan=3 Style='padding: 0 0 0 0;'>" + string + "</Td>";
    }
 else
    {
     JBC_InnerHTML += "<Td>&nbsp;<Td>";
     JBC_InnerHTML += "<Td Style='padding: 0 0 0 0;'>" + string + "</Td>";
     JBC_InnerHTML += "<Td>&nbsp;<Td>";
    }
}
