Positioning of submenus?

Hi- can anyone tell how to make Spry submenus appear ABOVE
the main menu bar instead of below? Thanks, Jaclyn

Hi Jaclyn,
Open up the CSS settings for ul.MenuBarVertical ul or the
horizontal equivalent and edit the margin settings. The default is
-5% 0 0 95%. These four values represent the top, right, bottom and
left margins, possibly not in that order, of the submenu relative
to the parent menu. Hover your curser over the margin setting in
the CSS menu and it will also tell you what the values represent.
So all you need to do is change the first setting to say 50% and
the sub menus will expand out above the default setting. This is of
course in relation to the vertical menu.
Clear as mud!
I hope that helps.
Cheers,
Andrew
P.S. you don’t know what code one has to write to add a
submenu in addition to the two standard submenus?

Similar Messages

  • Adjusting position of submenus

    I have scoured the forum but cannot find an answer for this.  I want to move my submenus so they are not jammed into my main menu.  Can't understand why this is so difficult.  Like many others, every time I adjust I get the snap back into original position.

    I notice same thing yesterday, then I found out you can customize it with spacing window where you can change padding...

  • Horizontal Menu position of submenus

    I'm a novice to Dreamweaver CS3. I have the Spry Horizontal
    Menu working on my site using an include statement so it can be
    pulled into all pages. I centered the menu bar on the page and it's
    below some other elements instead of being at the top of the page.
    The problem I'm having is that the submenu's always appear at the
    top of the page. I've seen the CSS code and help info that says to
    change the following code as needed.
    ul.MenuBarHorizontal ul ul{
    position: absolute;
    margin: -5% 0 0 95%;
    I have tried changing all these values but the submenu's
    still appear at the top of the page. Can someone please help me
    with this. Thanks much!!!
    Harry

    Hi Harry,
    Did you select the entire menubar in Dreamweaver and hit the
    center button in the Property inspector? If so, that may have
    inserted some <div> tags within your menu structure that
    breaks it. If so, remove all of the <div> tags that were
    inserted, and then visit this page which explains how to center
    things:
    http://labs.adobe.com/technologies/spry/samples/menubar/CenteringHorizontalMenuBarSample.h tml
    --== Kin ==--

  • Spry Menu Bar Positioning Problem in IE

    I have a Dreamweaver-created Spry Menu Bar drop down menu which works perfectly in every browser on my Mac and on my PC . . . EXCEPT Internet Explorer (who woulda thunk it?!!)
    In all browsers except for IE, the 3 submenu items under "Door Systems" and "Gallery" appear exactly as they should in a vertical row, positioned just below the brown line below the navigation links and all the same width. But in IE they appear higher up and with different widths. IE is ignoring the rules for width and position.
      <ul id="MenuBar2" class="MenuBarHorizontal">
        <li><a class="MenuBarItemSubmenu" href="closet_doors_gallery.html">DOOR SYSTEMS</a>
          <ul>
            <li><a href="sliding_doors_nyc_nj.html">DOOR PROFILES</a></li>
            <li><a href="bifold_doors_nyc_nj.html">PANELS COLORS</a></li>
            <li><a href="room_dividers_nyc_nj.html">DOOR SYSTEM TYPES</a></li>
          </ul>
        </li>
      </ul>
    <ul id="MenuBar3" class="MenuBarHorizontal">
        <li><a class="MenuBarItemSubmenu" href="#">GALLERY </a>
          <ul>
            <li><a href="#">SLIDING DOORS</a></li>
            <li><a href="#">BI-FOLD DOORS</a></li>
            <li><a href="#">ROOM DIVIDERS</a></li>
          </ul>
        </li>
      </ul>
    Here is the page where you can see the problem if you view it with IE, and see that it's  fine in Safari, and Firefox,    Chrome and Opera, Mac or PC:
    http://2113web.com/indeco/index.html
    I have a feeling it's a simple fix of the css, but I can't figure it out - I would really appreciate anyone's help with it - thank you!
    Below is the CSS:
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        font-weight:bold;
        cursor: default;
        width: auto;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        position: relative;
        text-align: left;
        cursor: pointer;
        width: auto;
        float: left;
        white-space: nowrap;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        z-index: 1020;
        cursor: default;
        width: auto;
        position: absolute;
        left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: auto;
        top: 63px; /*THIS POSITIONS THE SUBMENU BELOW THE TOP MENU*/
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        float: none;
        background-color:#f5f5e8;
        height:25px; /*THIS POSITIONS THE SUBMENUS HEIGHT*/
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        position: absolute;
        margin-top: -5%;
        margin-right: 0;
        margin-bottom: 0;
        margin-left: 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
        border:none;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        background-color: transparent;
        padding: 0.5em 0.75em;
        color: #59330d;
        text-decoration: none;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        background-color: transparent;
        color: #afa06f;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
        background-color: transparent;
        color: #afa06f;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%)
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarDown.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%)
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarRight.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%)
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarDownHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%)
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarRightHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position: absolute;
        z-index: 1010;
        filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarHorizontal li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;
    Perry

    Hi and thank you very much. It was a little confusing as to whether you meant to add the rules you suggested or to replace them, or a combination of both, but I puzzled it out. I created a new MenuBarHorizontal.css file in a blank page and then made the changes you suggested and it works! Yay! I had to do a bit of tweaking to get it to look just the way I wanted, but it now works correctly in ie 7 and 8 and still works fine in everything else.
    Interestingly enough, I had to change the margin-top: 63px; rule in "ul.MenuBarHorizontal ul.MenuBarSubmenuVisible" to 40px to get it positioned properly vertically, and I had to get rid of the "border-bottom: solid 1px #EEE;" in "ul.MenuBarHorizontal ul li", which caused the submenu items to have quite a lot of vertical space between them - I'm not sure why!
    I also had to get rid of all the syling rules in the "SUBMENU INDICATION: styles if there is a submenu under a given menu item" section, as well as the one you added: "ul.MenuBarHorizontal a.MenuBarItemSubmenu {
        padding: 0.5em 2em 0.5em 0.75em;"
    With that done, it works great in both ie7 and ie8, so thank you for the help. Below is the new css that works, in total.
    Not being as familiar with the subtleties of CSS as you and many others obviously are, I'm REALLY curious as to exactly what is different that causes this to work now, and would be happy to hear your expanation, if you feel like taking the time to explain. If not, no problem - it works and that is the most important thing! So, thank you again -
    Perry
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: auto;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        position: relative;
        text-align: left;
        cursor: pointer;
        width: auto;
        float: left;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        z-index: 1020;
        cursor: default;
        width: auto;
        position: absolute;
        left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: auto;
        margin-top: 40px;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        display: block;
        float: none !important;
        width: auto;
        white-space: nowrap;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        position: absolute;
        margin: -5% 0 0 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
        border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        background-color: #f5f5e8;
        padding: 0.5em 0.75em;
        color: #333;
        text-decoration: none;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
          background-color: #f5f5e8;
        color: #afa06f;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
          background-color: #f5f5e8;
        color: #afa06f;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position: absolute;
        z-index: 1010;
        filter:alpha(opacity:0.1);
        background: transparent;
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarHorizontal li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;

  • How I add to submenus

    Hi all,
    I am using the following code to make a submenu with success:
    Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
            oCreationPackage = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams)
            oMenuItem = SBO_Application.Menus.Item("43520") ' MODULES
            sPath = System.Windows.Forms.Application.StartupPath()
            sPath = sPath.Remove(sPath.Length - 3, 3)
            ' Creation parameters
            oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_POPUP
            oCreationPackage.UniqueID = "SM_VID"
            oCreationPackage.String = "SubMennuText"
            ' we add our menu at the buttom of the list
            oCreationPackage.Position = oMenuItem.SubMenus.Count + 1
            oMenus = oMenuItem.SubMenus
    But I try to add another submenu by repeating the same code without success. Any Idea?
    Thanks in Advance.
    Vangelis

    Hi,
    This is an example to create submenu :
    SAPbouiCOM.Menus oMenus;
                SAPbouiCOM.MenuItem oMenuItem;
                SAPbouiCOM.MenuCreationParams oMenuCreationParams;
                string sPath = "";
                try
                    sPath = System.Windows.Forms.Application.StartupPath;
                    oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
                    oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_POPUP;
                    oMenuCreationParams.Image = sPath + "
    IMG127.BMP";
                    oMenuCreationParams.Position = 6;
                    oMenuCreationParams.UniqueID = "IFC_MENU_COM";
                    oMenuCreationParams.String = ChangeLanguage.GetName_For_Menu(SBO_Application.Language); ;
                    oMenuItem = SBO_Application.Menus.Item("43520");
                    oMenus = oMenuItem.SubMenus;
                    if(SBO_Application.Menus.Exists("IFC_MENU_COM") == true)
                        return;
                    oMenuItem = oMenus.AddEx(oMenuCreationParams);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oMenuCreationParams);
                    oMenuCreationParams = null;
                    oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
                    oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_STRING;
                    oMenuCreationParams.Image = "";
                    oMenuCreationParams.Position = 1;
                    oMenuCreationParams.UniqueID = "IFC_COM";
                    oMenuCreationParams.String = "submenu1";
                    oMenus = oMenuItem.SubMenus;
                    oMenus.AddEx(oMenuCreationParams);
                    oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
                    oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_STRING;
                    oMenuCreationParams.Image = "";
                    oMenuCreationParams.Position = 2;
                    oMenuCreationParams.UniqueID = "IFC_CALC";
                    oMenuCreationParams.String = "submenu2";
                    oMenus.AddEx(oMenuCreationParams);
                    oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
                    oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_STRING;
                    oMenuCreationParams.Image = "";
                    oMenuCreationParams.Position = 3;
                    oMenuCreationParams.UniqueID = "IFC_BULL";
                    oMenuCreationParams.String = "submenu3";
                    oMenus.AddEx(oMenuCreationParams);
                catch (Exception ex)
                    //Catch
    Hope it's help you
    Regards
    Michael
    Edited by: Michael LECLERCQ on Jan 5, 2009 3:25 PM

  • I lost the blue tab on my spry menu.

    I've saved my document and re-opened it, but still can't get the blue spry menu tab to show. Also can't see my submenus in the browser. It shows in my code. Here is my code.
    <table width="878" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="878" height="37" align="center" valign="middle" bgcolor="#D1D1D1">
           <ul id="MenuBar1" class="MenuBarHorizontal">
          <li><a href="#">HOME</a>      </li>
          <li><a href="#" class="MenuBarItemSubmenu">ABOUT US</a>
            <ul>
              <li><a href="#">Become A Member</a></li>
              <li><a href="#">Photo Gallery</a></li>
              <li><a href="#">Contact Us</a></li>
    </ul>
          </li>
          <li><a class="MenuBarItemSubmenu" href="#">NEWS</a>
            <ul>
              <li><a href="#">Events</a>          </li>
              <li><a href="#">Job Listings</a></li>
              <li><a href="#">Hot Deals</a></li>
            </ul>
          </li>
          <li><a href="#" class="MenuBarItemSubmenu">EVENTS</a>
            <ul>
              <li><a href="#">News</a></li>
              <li><a href="#">Chamber Calendar</a></li>
              <li><a href="#">Community Calendar</a></li>
              <li><a href="#">Photo Gallery</a></li>
              <li><a href="#">Hot Deals</a></li>
            </ul>
          </li>
          <li><a href="#" class="MenuBarItemSubmenu">COMMUNITY</a>
            <ul>
              <li><a href="#">Scott Air Force Base</a></li>
              <li><a href="#">City of O'Fallon</a></li>
              <li><a href="#">O'Fallon Welcome Guide</a></li>
              <li><a href="#">O'Fallon-Shiloh Area Restaurant Guide</a></li>
              <li><a href="#" class="MenuBarItemSubmenu">Shiloh</a>
                <ul>
                  <li><a href="#">Village of Shiloh</a></li>
                  <li><a href="#">Village Services Guide</a></li>
                  <li><a href="#">Shiloh Community Calendar</a></li>
                </ul>
              </li>
              <li><a href="#">Events &amp; Reception Planning Guide</a></li>
              <li><a href="#">Relocation Packet Info</a></li>
              <li><a href="#">The Tourism Burea Illinois South</a></li>
            </ul>
          </li>
          <li><a href="#" class="MenuBarItemSubmenu">CONTACT US</a>
            <ul>
              <li><a href="#">Member Login</a></li>
              <li><a href="#">Member Directory</a></li>
              <li><a href="#">Community Business Info</a></li>
            </ul>
          </li>
          <li><a href="#" class="MenuBarItemSubmenu">JOIN US</a>
            <ul>
              <li><a href="#">Member Directory</a></li>
              <li><a href="#">Become A Member</a></li>
              <li><a href="#">Member Login</a></li>
            </ul>
          </li>
          <li><a href="#" class="MenuBarItemSubmenu">COMMITTEES</a>
            <ul>
              <li><a href="#">Board of Directors</a></li>
              <li><a href="#">Ambassadors</a></li>
              <li><a href="#">Star Investors</a></li>
              <li><a href="#">Member Directory</a></li>
            </ul>
          </li>
          <li><a href="#">PHOTO GALLERY</a></li>
    </ul></td>
      </tr>
    </table>
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        list-style-type: none;
        cursor: default;
        width: 878px;
        white-space: nowrap;
        display: inline;
        position: relative;
        margin-top: 0px;
        margin-right: auto;
        margin-bottom: 0px;
        margin-left: auto;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0 auto;
        padding: 0;
        position: relative;
        text-align: left;
        cursor: default;
        font-family: "Trebuchet MS", Arial, Helvetica, sans-serif, Biondi;
        font-weight: normal;
        font-style: normal;
        font-size: 87%;
        white-space: nowrap;
        line-height: normal;
        width: auto;
        clear: none;
        float: left;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        z-index: 1020;
        cursor: default;
        width: auto;
        position: absolute;
        left: 1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: auto;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        text-align: left;
        white-space: nowrap;
        display: block;
        float: none;
        font-size: 100%;
        font-family: "Trebuchet MS", Arial, Helvetica, sans-serif, Biondi;
        font-style: normal;
        line-height: normal;
        font-weight: bolder;
        text-transform: none;
        background-color: transparent;
        width: auto;
        position: relative;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        margin-top: -5%;
        margin-right: 0px;
        margin-bottom: 0;
        margin-left: 95%;
        position: absolute;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
        border-top-color: #021844;
        border-right-color: #021844;
        border-bottom-color: #021844;
        border-left-color: #021844;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        background-color: #021844;
        color: #FFF;
        text-decoration: none;
        border: 1px solid #FFF;
        text-align: left;
        padding-top: 0.5em;
        padding-right: 0.75em;
        padding-bottom: 0.5em;
        padding-left: 0.75em;
        white-space: nowrap;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        color: #036009;
        background-color: #FFF;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-image: none;
        background-position: 95% 50%;
        background-color: #021844;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarRightHover.gif);
        background-position: 95% 50%;
        background-repeat: no-repeat;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
        background-image: none;
        background-position: 95% 50%;
        color: #036009;
        background-color: #FFF;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarRightHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position: absolute;
        z-index: 1010;
        filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarHorizontal li.MenuBarItemIE
        display: inline;
        f\loat: left;
        background: #FFF;
    // SpryMenuBar.js - version 0.13 - Spry Pre-Release 1.6.1
    // Copyright (c) 2006. Adobe Systems Incorporated.
    // All rights reserved.
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions are met:
    //   * Redistributions of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //   * Redistributions in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //   * Neither the name of Adobe Systems Incorporated nor the names of its
    //     contributors may be used to endorse or promote products derived from this
    //     software without specific prior written permission.
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    // POSSIBILITY OF SUCH DAMAGE.
    SpryMenuBar.js
    This file handles the JavaScript for Spry Menu Bar.  You should have no need
    to edit this file.  Some highlights of the MenuBar object is that timers are
    used to keep submenus from showing up until the user has hovered over the parent
    menu item for some time, as well as a timer for when they leave a submenu to keep
    showing that submenu until the timer fires.
    (function() { // BeginSpryComponent
    if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};
    Spry.BrowserSniff = function()
        var b = navigator.appName.toString();
        var up = navigator.platform.toString();
        var ua = navigator.userAgent.toString();
        this.mozilla = this.ie = this.opera = this.safari = false;
        var re_opera = /Opera.([0-9\.]*)/i;
        var re_msie = /MSIE.([0-9\.]*)/i;
        var re_gecko = /gecko/i;
        var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
        var r = false;
        if ( (r = ua.match(re_opera))) {
            this.opera = true;
            this.version = parseFloat(r[1]);
        } else if ( (r = ua.match(re_msie))) {
            this.ie = true;
            this.version = parseFloat(r[1]);
        } else if ( (r = ua.match(re_safari))) {
            this.safari = true;
            this.version = parseFloat(r[2]);
        } else if (ua.match(re_gecko)) {
            var re_gecko_version = /rv:\s*([0-9\.]+)/i;
            r = ua.match(re_gecko_version);
            this.mozilla = true;
            this.version = parseFloat(r[1]);
        this.windows = this.mac = this.linux = false;
        this.Platform = ua.match(/windows/i) ? "windows" :
                        (ua.match(/linux/i) ? "linux" :
                        (ua.match(/mac/i) ? "mac" :
                        ua.match(/unix/i)? "unix" : "unknown"));
        this[this.Platform] = true;
        this.v = this.version;
        if (this.safari && this.mac && this.mozilla) {
            this.mozilla = false;
    Spry.is = new Spry.BrowserSniff();
    // Constructor for Menu Bar
    // element should be an ID of an unordered list (<ul> tag)
    // preloadImage1 and preloadImage2 are images for the rollover state of a menu
    Spry.Widget.MenuBar = function(element, opts)
        this.init(element, opts);
    Spry.Widget.MenuBar.prototype.init = function(element, opts)
        this.element = this.getElement(element);
        // represents the current (sub)menu we are operating on
        this.currMenu = null;
        this.showDelay = 250;
        this.hideDelay = 600;
        if(typeof document.getElementById == 'undefined' || (navigator.vendor == 'Apple Computer, Inc.' && typeof window.XMLHttpRequest == 'undefined') || (Spry.is.ie && typeof document.uniqueID == 'undefined'))
            // bail on older unsupported browsers
            return;
        // Fix IE6 CSS images flicker
        if (Spry.is.ie && Spry.is.version < 7){
            try {
                document.execCommand("BackgroundImageCache", false, true);
            } catch(err) {}
        this.upKeyCode = Spry.Widget.MenuBar.KEY_UP;
        this.downKeyCode = Spry.Widget.MenuBar.KEY_DOWN;
        this.leftKeyCode = Spry.Widget.MenuBar.KEY_LEFT;
        this.rightKeyCode = Spry.Widget.MenuBar.KEY_RIGHT;
        this.escKeyCode = Spry.Widget.MenuBar.KEY_ESC;
        this.hoverClass = 'MenuBarItemHover';
        this.subHoverClass = 'MenuBarItemSubmenuHover';
        this.subVisibleClass ='MenuBarSubmenuVisible';
        this.hasSubClass = 'MenuBarItemSubmenu';
        this.activeClass = 'MenuBarActive';
        this.isieClass = 'MenuBarItemIE';
        this.verticalClass = 'MenuBarVertical';
        this.horizontalClass = 'MenuBarHorizontal';
        this.enableKeyboardNavigation = true;
        this.hasFocus = false;
        // load hover images now
        if(opts)
            for(var k in opts)
                if (typeof this[k] == 'undefined')
                    var rollover = new Image;
                    rollover.src = opts[k];
            Spry.Widget.MenuBar.setOptions(this, opts);
        // safari doesn't support tabindex
        if (Spry.is.safari)
            this.enableKeyboardNavigation = false;
        if(this.element)
            this.currMenu = this.element;
            var items = this.element.getElementsByTagName('li');
            for(var i=0; i<items.length; i++)
                if (i > 0 && this.enableKeyboardNavigation)
                    items[i].getElementsByTagName('a')[0].tabIndex='-1';
                this.initialize(items[i], element);
                if(Spry.is.ie)
                    this.addClassName(items[i], this.isieClass);
                    items[i].style.position = "static";
            if (this.enableKeyboardNavigation)
                var self = this;
                this.addEventListener(document, 'keydown', function(e){self.keyDown(e); }, false);
            if(Spry.is.ie)
                if(this.hasClassName(this.element, this.verticalClass))
                    this.element.style.position = "relative";
                var linkitems = this.element.getElementsByTagName('a');
                for(var i=0; i<linkitems.length; i++)
                    linkitems[i].style.position = "relative";
    Spry.Widget.MenuBar.KEY_ESC = 27;
    Spry.Widget.MenuBar.KEY_UP = 38;
    Spry.Widget.MenuBar.KEY_DOWN = 40;
    Spry.Widget.MenuBar.KEY_LEFT = 37;
    Spry.Widget.MenuBar.KEY_RIGHT = 39;
    Spry.Widget.MenuBar.prototype.getElement = function(ele)
        if (ele && typeof ele == "string")
            return document.getElementById(ele);
        return ele;
    Spry.Widget.MenuBar.prototype.hasClassName = function(ele, className)
        if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
            return false;
        return true;
    Spry.Widget.MenuBar.prototype.addClassName = function(ele, className)
        if (!ele || !className || this.hasClassName(ele, className))
            return;
        ele.className += (ele.className ? " " : "") + className;
    Spry.Widget.MenuBar.prototype.removeClassName = function(ele, className)
        if (!ele || !className || !this.hasClassName(ele, className))
            return;
        ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
    // addEventListener for Menu Bar
    // attach an event to a tag without creating obtrusive HTML code
    Spry.Widget.MenuBar.prototype.addEventListener = function(element, eventType, handler, capture)
        try
            if (element.addEventListener)
                element.addEventListener(eventType, handler, capture);
            else if (element.attachEvent)
                element.attachEvent('on' + eventType, handler);
        catch (e) {}
    // createIframeLayer for Menu Bar
    // creates an IFRAME underneath a menu so that it will show above form controls and ActiveX
    Spry.Widget.MenuBar.prototype.createIframeLayer = function(menu)
        var layer = document.createElement('iframe');
        layer.tabIndex = '-1';
        layer.src = 'javascript:""';
        layer.frameBorder = '0';
        layer.scrolling = 'no';
        menu.parentNode.appendChild(layer);
        layer.style.left = menu.offsetLeft + 'px';
        layer.style.top = menu.offsetTop + 'px';
        layer.style.width = menu.offsetWidth + 'px';
        layer.style.height = menu.offsetHeight + 'px';
    // removeIframeLayer for Menu Bar
    // removes an IFRAME underneath a menu to reveal any form controls and ActiveX
    Spry.Widget.MenuBar.prototype.removeIframeLayer =  function(menu)
        var layers = ((menu == this.element) ? menu : menu.parentNode).getElementsByTagName('iframe');
        while(layers.length > 0)
            layers[0].parentNode.removeChild(layers[0]);
    // clearMenus for Menu Bar
    // root is the top level unordered list (<ul> tag)
    Spry.Widget.MenuBar.prototype.clearMenus = function(root)
        var menus = root.getElementsByTagName('ul');
        for(var i=0; i<menus.length; i++)
            this.hideSubmenu(menus[i]);
        this.removeClassName(this.element, this.activeClass);
    // bubbledTextEvent for Menu Bar
    // identify bubbled up text events in Safari so we can ignore them
    Spry.Widget.MenuBar.prototype.bubbledTextEvent = function()
        return Spry.is.safari && (event.target == event.relatedTarget.parentNode || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget));
    // showSubmenu for Menu Bar
    // set the proper CSS class on this menu to show it
    Spry.Widget.MenuBar.prototype.showSubmenu = function(menu)
        if(this.currMenu)
            this.clearMenus(this.currMenu);
            this.currMenu = null;
        if(menu)
            this.addClassName(menu, this.subVisibleClass);
            if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
                if(!this.hasClassName(this.element, this.horizontalClass) || menu.parentNode.parentNode != this.element)
                    menu.style.top = menu.parentNode.offsetTop + 'px';
            if(Spry.is.ie && Spry.is.version < 7)
                this.createIframeLayer(menu);
        this.addClassName(this.element, this.activeClass);
    // hideSubmenu for Menu Bar
    // remove the proper CSS class on this menu to hide it
    Spry.Widget.MenuBar.prototype.hideSubmenu = function(menu)
        if(menu)
            this.removeClassName(menu, this.subVisibleClass);
            if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
                menu.style.top = '';
                menu.style.left = '';
            if(Spry.is.ie && Spry.is.version < 7)
                this.removeIframeLayer(menu);
    // initialize for Menu Bar
    // create event listeners for the Menu Bar widget so we can properly
    // show and hide submenus
    Spry.Widget.MenuBar.prototype.initialize = function(listitem, element)
        var opentime, closetime;
        var link = listitem.getElementsByTagName('a')[0];
        var submenus = listitem.getElementsByTagName('ul');
        var menu = (submenus.length > 0 ? submenus[0] : null);
        if(menu)
            this.addClassName(link, this.hasSubClass);
        if(!Spry.is.ie)
            // define a simple function that comes standard in IE to determine
            // if a node is within another node
            listitem.contains = function(testNode)
                // this refers to the list item
                if(testNode == null)
                    return false;
                if(testNode == this)
                    return true;
                else
                    return this.contains(testNode.parentNode);
        // need to save this for scope further down
        var self = this;
        this.addEventListener(listitem, 'mouseover', function(e){self.mouseOver(listitem, e);}, false);
        this.addEventListener(listitem, 'mouseout', function(e){if (self.enableKeyboardNavigation) self.clearSelection(); self.mouseOut(listitem, e);}, false);
        if (this.enableKeyboardNavigation)
            this.addEventListener(link, 'blur', function(e){self.onBlur(listitem);}, false);
            this.addEventListener(link, 'focus', function(e){self.keyFocus(listitem, e);}, false);
    Spry.Widget.MenuBar.prototype.keyFocus = function (listitem, e)
        this.lastOpen = listitem.getElementsByTagName('a')[0];
        this.addClassName(this.lastOpen, listitem.getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
        this.hasFocus = true;
    Spry.Widget.MenuBar.prototype.onBlur = function (listitem)
        this.clearSelection(listitem);
    Spry.Widget.MenuBar.prototype.clearSelection = function(el){
        //search any intersection with the current open element
        if (!this.lastOpen)
            return;
        if (el)
            el = el.getElementsByTagName('a')[0];
            // check children
            var item = this.lastOpen;
            while (item != this.element)
                var tmp = el;
                while (tmp != this.element)
                    if (tmp == item)
                        return;
                    try{
                        tmp = tmp.parentNode;
                    }catch(err){break;}
                item = item.parentNode;
        var item = this.lastOpen;
        while (item != this.element)
            this.hideSubmenu(item.parentNode);
            var link = item.getElementsByTagName('a')[0];
            this.removeClassName(link, this.hoverClass);
            this.removeClassName(link, this.subHoverClass);
            item = item.parentNode;
        this.lastOpen = false;
    Spry.Widget.MenuBar.prototype.keyDown = function (e)
        if (!this.hasFocus)
            return;
        if (!this.lastOpen)
            this.hasFocus = false;
            return;
        var e = e|| event;
        var listitem = this.lastOpen.parentNode;
        var link = this.lastOpen;
        var submenus = listitem.getElementsByTagName('ul');
        var menu = (submenus.length > 0 ? submenus[0] : null);
        var hasSubMenu = (menu) ? true : false;
        var opts = [listitem, menu, null, this.getSibling(listitem, 'previousSibling'), this.getSibling(listitem, 'nextSibling')];
        if (!opts[3])
            opts[2] = (listitem.parentNode.parentNode.nodeName.toLowerCase() == 'li')?listitem.parentNode.parentNode:null;
        var found = 0;
        switch (e.keyCode){
            case this.upKeyCode:
                found = this.getElementForKey(opts, 'y', 1);
                break;
            case this.downKeyCode:
                found = this.getElementForKey(opts, 'y', -1);
                break;
            case this.leftKeyCode:
                found = this.getElementForKey(opts, 'x', 1);
                break;
            case this.rightKeyCode:
                found = this.getElementForKey(opts, 'x', -1);
                break;
            case this.escKeyCode:
            case 9:
                this.clearSelection();
                this.hasFocus = false;
            default: return;
        switch (found)
            case 0: return;
            case 1:
                //subopts
                this.mouseOver(listitem, e);
                break;
            case 2:
                //parent
                this.mouseOut(opts[2], e);
                break;
            case 3:
            case 4:
                // left - right
                this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
                break;
        var link = opts[found].getElementsByTagName('a')[0];
        if (opts[found].nodeName.toLowerCase() == 'ul')
            opts[found] = opts[found].getElementsByTagName('li')[0];
        this.addClassName(link, opts[found].getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
        this.lastOpen = link;
        opts[found].getElementsByTagName('a')[0].focus();
            //stop further event handling by the browser
        return Spry.Widget.MenuBar.stopPropagation(e);
    Spry.Widget.MenuBar.prototype.mouseOver = function (listitem, e)
        var link = listitem.getElementsByTagName('a')[0];
        var submenus = listitem.getElementsByTagName('ul');
        var menu = (submenus.length > 0 ? submenus[0] : null);
        var hasSubMenu = (menu) ? true : false;
        if (this.enableKeyboardNavigation)
            this.clearSelection(listitem);
        if(this.bubbledTextEvent())
            // ignore bubbled text events
            return;
        if (listitem.closetime)
            clearTimeout(listitem.closetime);
        if(this.currMenu == listitem)
            this.currMenu = null;
        // move the focus too
        if (this.hasFocus)
            link.focus();
        // show menu highlighting
        this.addClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
        this.lastOpen = link;
        if(menu && !this.hasClassName(menu, this.subHoverClass))
            var self = this;
            listitem.opentime = window.setTimeout(function(){self.showSubmenu(menu);}, this.showDelay);
    Spry.Widget.MenuBar.prototype.mouseOut = function (listitem, e)
        var link = listitem.getElementsByTagName('a')[0];
        var submenus = listitem.getElementsByTagName('ul');
        var menu = (submenus.length > 0 ? submenus[0] : null);
        var hasSubMenu = (menu) ? true : false;
        if(this.bubbledTextEvent())
            // ignore bubbled text events
            return;
        var related = (typeof e.relatedTarget != 'undefined' ? e.relatedTarget : e.toElement);
        if(!listitem.contains(related))
            if (listitem.opentime)
                clearTimeout(listitem.opentime);
            this.currMenu = listitem;
            // remove menu highlighting
            this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
            if(menu)
                var self = this;
                listitem.closetime = window.setTimeout(function(){self.hideSubmenu(menu);}, this.hideDelay);
            if (this.hasFocus)
                link.blur();
    Spry.Widget.MenuBar.prototype.getSibling = function(element, sibling)
        var child = element[sibling];
        while (child && child.nodeName.toLowerCase() !='li')
            child = child[sibling];
        return child;
    Spry.Widget.MenuBar.prototype.getElementForKey = function(els, prop, dir)
        var found = 0;
        var rect = Spry.Widget.MenuBar.getPosition;
        var ref = rect(els[found]);
        var hideSubmenu = false;
        //make the subelement visible to compute the position
        if (els[1] && !this.hasClassName(els[1], this.MenuBarSubmenuVisible))
            els[1].style.visibility = 'hidden';
            this.showSubmenu(els[1]);
            hideSubmenu = true;
        var isVert = this.hasClassName(this.element, this.verticalClass);
        var hasParent = els[0].parentNode.parentNode.nodeName.toLowerCase() == 'li' ? true : false;
        for (var i = 1; i < els.length; i++){
            //when navigating on the y axis in vertical menus, ignore children and parents
            if(prop=='y' && isVert && (i==1 || i==2))
                continue;
            //when navigationg on the x axis in the FIRST LEVEL of horizontal menus, ignore children and parents
            if(prop=='x' && !isVert && !hasParent && (i==1 || i==2))
                continue;
            if (els[i])
                var tmp = rect(els[i]);
                if ( (dir * tmp[prop]) < (dir * ref[prop]))
                    ref = tmp;
                    found = i;
        // hide back the submenu
        if (els[1] && hideSubmenu){
            this.hideSubmenu(els[1]);
            els[1].style.visibility =  '';
        return found;
    Spry.Widget.MenuBar.camelize = function(str)
        if (str.indexOf('-') == -1){
            return str;   
        var oStringList = str.split('-');
        var isFirstEntry = true;
        var camelizedString = '';
        for(var i=0; i < oStringList.length; i++)
            if(oStringList[i].length>0)
                if(isFirstEntry)
                    camelizedString = oStringList[i];
                    isFirstEntry = false;
                else
                    var s = oStringList[i];
                    camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
        return camelizedString;
    Spry.Widget.MenuBar.getStyleProp = function(element, prop)
        var value;
        try
            if (element.style)
                value = element.style[Spry.Widget.MenuBar.camelize(prop)];
            if (!value)
                if (document.defaultView && document.defaultView.getComputedStyle)
                    var css = document.defaultView.getComputedStyle(element, null);
                    value = css ? css.getPropertyValue(prop) : null;
                else if (element.currentStyle)
                        value = element.currentStyle[Spry.Widget.MenuBar.camelize(prop)];
        catch (e) {}
        return value == 'auto' ? null : value;
    Spry.Widget.MenuBar.getIntProp = function(element, prop)
        var a = parseInt(Spry.Widget.MenuBar.getStyleProp(element, prop),10);
        if (isNaN(a))
            return 0;
        return a;
    Spry.Widget.MenuBar.getPosition = function(el, doc)
        doc = doc || document;
        if (typeof(el) == 'string') {
            el = doc.getElementById(el);
        if (!el) {
            return false;
        if (el.parentNode === null || Spry.Widget.MenuBar.getStyleProp(el, 'display') == 'none') {
            //element must be visible to have a box
            return false;
        var ret = {x:0, y:0};
        var parent = null;
        var box;
        if (el.getBoundingClientRect) { // IE
            box = el.getBoundingClientRect();
            var scrollTop = doc.documentElement.scrollTop || doc.body.scrollTop;
            var scrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft;
            ret.x = box.left + scrollLeft;
            ret.y = box.top + scrollTop;
        } else if (doc.getBoxObjectFor) { // gecko
            box = doc.getBoxObjectFor(el);
            ret.x = box.x;
            ret.y = box.y;
        } else { // safari/opera
            ret.x = el.offsetLeft;
            ret.y = el.offsetTop;
            parent = el.offsetParent;
            if (parent != el) {
                while (parent) {
                    ret.x += parent.offsetLeft;
                    ret.y += parent.offsetTop;
                    parent = parent.offsetParent;
            // opera & (safari absolute) incorrectly account for body offsetTop
            if (Spry.is.opera || Spry.is.safari && Spry.Widget.MenuBar.getStyleProp(el, 'position') == 'absolute')
                ret.y -= doc.body.offsetTop;
        if (el.parentNode)
                parent = el.parentNode;
        else
            parent = null;
        if (parent.nodeName){
            var cas = parent.nodeName.toUpperCase();
            while (parent && cas != 'BODY' && cas != 'HTML') {
                cas = parent.nodeName.toUpperCase();
                ret.x -= parent.scrollLeft;
                ret.y -= parent.scrollTop;
                if (parent.parentNode)
                    parent = parent.parentNode;
                else
                    parent = null;
        return ret;
    Spry.Widget.MenuBar.stopPropagation = function(ev)
        if (ev.stopPropagation)
            ev.stopPropagation();
        else
            ev.cancelBubble = true;
        if (ev.preventDefault)
            ev.preventDefault();
        else
            ev.returnValue = false;
    Spry.Widget.MenuBar.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
        if (!optionsObj)
            return;
        for (var optionName in optionsObj)
            if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
                continue;
            obj[optionName] = optionsObj[optionName];
    })(); // EndSpryComponent

    You don't need to upgrade your software.  But if you're struggling with Spry, IMO you should cut your losses and switch to something better for the longrun.
    If you have a budget to work with, I highly recommend Project Seven's Pop-Menu Magic 3.  It's easy to use in DW CS4, 5, 6 or CC.  More importantly, it's bullet proof and works in all devices. 
    Pop-Menu  Magic3 by PVII (commercial DW extension)
    http://www.projectseven.com/products/menusystems/pmm3/index.htm
    If you don't have a budget to work with, you can roll your own menus with jQuery plugins.  A bit more effort on your part, but they perform better than Spry.
    jQuery Superfish
    http://users.tpg.com.au/j_birch/plugins/superfish/
    jQuery MegaMenu2
    DEMO:
    http://www.geektantra.com/projects/jquery-megamenu-2/
    DOWNLOAD:
    http://code.google.com/p/jquery-megamenu/
    Nancy O.

  • Spry Menu Bar acting weird in IE

    Hello,
    I am relativley new to Dreamweaver and I built a website using CS4.  I never did a spry menu bar and I have one on my site.  The menu bar works fine in firefox, in safari it seems to work as it is aligned right, but my flash player doesn't.  But the main problem is in IE.  The grey background I have for the spry bar is in the right spot but the actual links are offset, and when you role over them the submenus are on the left and also offset.  I tried messing around with the hack IE in the spry css but not really sure what I am doing as I don't know code too much.  I also am Mac based and the problem in IE is on the PC. Also I built all the pages in Illustrator and inserted them in and used hot spots. I am not sure if that may have something to do with it.   If any one can help I would really appreciate it.  The website I created is http://www.menaceaudio.com. 
    Also if this helps here is my SpryMenuBarHorizontal.css
    @charset "UTF-8";
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
    /* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        margin: auto;
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: 41.25em;
        padding: 0px;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        list-style-type: none;
        font-size: 14pt;
        position: relative;
        text-align: center;
        cursor: pointer;
        float: left;
        padding: 0;
        color: #FFF;
        background-color:#ccc;
        width: 8.23em;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        z-index: 1020;
        cursor: default;
        float: left;
        left: -1000px;
        width: 8.23em;
        position: absolute;
        background-color: #CCC;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: 0px;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        width: 8.23em;
        background-color: #CCC;
        position: relative;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        position: absolute;
        margin-top: -5%;
        margin-right: 0;
        margin-bottom: 0;
        margin-left: 95%;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-repeat: repeat-y;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal a
        left: -20px;
        top: 30px;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        cursor: pointer;
        text-decoration: none;
        font-family: eurostile;
        font-size: 14px;
        background-repeat: no-repeat;
        padding: 0.5em;
        margin: 0.5px;
        display: block;
        color: #036;
        border-top-width: thin;
        border-right-width: thin;
        border-bottom-width: thin;
        border-left-width: thin;
        border-top-style: solid;
        border-bottom-style: solid;
        border-left-style: solid;
        border-top-color: #333;
        border-right-color: #333;
        border-bottom-color: #333;
        border-left-color: #333;
        border-right-style: solid;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        color: #FFF;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-repeat: repeat-x;
        font-family: eurostile;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position:absolute;
        z-index: 1010;
        filter:alpha(opacity:0.1);
        ul.MenuBarHorizontal li.MenuBarItemIE
        ßfloat: left;
        position: relative;
        display: inline;

    I'm using IE8, and I don't see the offset errors of which you speak. I do recommend restoring the IE hacks at the bottom of the stylesheet to the original, however.
    I also notice that the width of the individual menu items (top level) is forcing "CONTACT" to a second line. You can safely remove the pixel width on the containing div, returning to 100%. But your paddings and widths of top level menu items may be the forcing issue here.
    Beth

  • Spry Menu bar wrongly displayed in IE

    Hi,
    on my website i integrated a Spry Menu bar with one Submenu, which really works fine in Firefox. The boxes have a defined width of 124 px.
    My problem is, if you view this site with IE, the drop down menus don´t work and you are asked to activate activeX or scripts. If you do so the whole menu is displayed white unless you roll over the buttons, you can see what actually should be there. Another bug is that the submenus, are oriented horizontally instead of vertically.
    Can anyone help me with this nice IE problem?
    Thanks a lot !
    Here my CSS-Code:                      and my website:http://www.grassnet.info/transfer.html
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: auto;
        font-weight: normal;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 90%;
        position: relative;
        text-align: center;
        cursor: pointer;
        width: 125px;
        float: left;
        font-family: Calibri, Arial, Helvetica, sans-serif;
        font-style: normal;
        font-weight: bold;
        background-color: #078601;
        border: thin solid #333;
        color: #FFF;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        z-index: 1020;
        cursor: default;
        position: absolute;
        left: -1000em;
        font-weight: normal;
        visibility: visible;
        border-top-style: none;
        border-right-style: none;
        border-bottom-style: none;
        border-left-style: none;
        color: #FFF;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: auto;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        width: 124px;
        text-align: left;
        font-weight: normal;
        background-color: #80c35d;
        border-top-width: 1px;
        border-right-width: 1px;
        border-bottom-width: 1px;
        border-left-width: 1px;
        border-top-style: dashed;
        border-right-style: solid;
        border-bottom-style: dashed;
        border-left-style: solid;
        border-top-color: #078601;
        border-right-color: #078601;
        border-bottom-color: #078601;
        border-left-color: #078601;
        font-family: Calibri, Arial, Helvetica, sans-serif,;
        list-style-type: none;
        list-style-position: inside;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        position: absolute;
        margin: -5% 0 0 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
        border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        padding: 0.5em 0.75em;
        text-decoration: none;
        text-transform: none;
        color: #FFF;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        background-color: #A5FC76;
        color: #FFF;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
        background-color: #A5FC76;
        color: #000;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarDown.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarRight.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarDownHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarRightHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position: absolute;
        z-index: 1010;
        filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarHorizontal li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;

    Hi Ben,
    thanks a lot for your great help. I integrated your recommendations in my sprymenubarhorizontal.css file and uploaded it.
    When i preview the site in the browser (Dreamweaver -> Preview in Iexplorer) it all looks like it should.
    However when i uploaded the new css file, the change is not visible. It´s still the old mistake.
    What am i doing wrong? What i also wonder about is, that the css file has a size of 6.554 Bytes. When i upload it, it only has 6.353 bytes.
    Can this be correct? Also the SpryMenuBar.js files are different in size.
    Do you have any idae what the problem here is?
    Thanks again !
    Add: I just recognized that also my html. files are different in size. So i guess this is normal. But where is the mistake hiding? I´courious
    Or could you pleas check again from your pc in iexplore? Thanks

  • Child value is not updated?

    Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
            Dim i As Integer
            Dim sumdepth As Decimal = 0
            Dim oForm As SAPbouiCOM.Form
            Dim Matrix As SAPbouiCOM.Matrix
            oForm = SBO_Application.Forms.Item(FormUID)
            Select Case pVal.EventType
                Case SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED
                    '// Check if the event was raised by one of the Folder items
                    '// and change the form's pane level
                Case SAPbouiCOM.BoEventTypes.et_CLICK
                    If pVal.ItemUID = "1" And pVal.BeforeAction = True Then
                        If oForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE Or oForm.Mode = SAPbouiCOM.BoFormMode.fm_UPDATE_MODE Then
                            'If Validation() = False Then
                            If oForm.Items.Item("OrdrVal").Specific().Value = "" Then
                                BubbleEvent = False
                                'SBO_Application.MessageBox(" Please Enter  The Order No ")
                                SBO_Application.StatusBar.SetText("Enter The  Order  No- 3029 Item Is Not Selectable  ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                                oForm.Items.Item("OrdrVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                                Exit Sub
                            End If
                            If oForm.Items.Item("LocVal").Specific().Value = "" Then
                                BubbleEvent = False
                                ' SBO_Application.MessageBox(" Please Enter  The Location ")
                                SBO_Application.StatusBar.SetText("Enter The  Location - 3029 Item Is Not Selectable  ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                                oForm.Items.Item("LocVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                                Exit Sub
                            End If
                            If oForm.Items.Item("SupVal").Specific().Value = "" Then
                                BubbleEvent = False
                                ' SBO_Application.MessageBox(" Please Enter  The Location ")
                                SBO_Application.StatusBar.SetText("Enter The  Supervisor - 3029 Item Is Not Selectable  ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                                oForm.Items.Item("SupVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                                Exit Sub
                            End If
                            Matrix = oForm.Items.Item("Matrix1").Specific
                            If Matrix.Columns.Item("Depth").Cells.Item(1).Specific.Value = "" Then
                                BubbleEvent = False
                                ' SBO_Application.MessageBox(" Please Enter  The Location ")
                                SBO_Application.StatusBar.SetText("Enter The  Depth - 3029 Item Is Not Selectable  ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                                ' oForm.Items.Item("Depth").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                                Exit Sub
                            End If
                            'Dim sSQL As String
                            'Dim logno As Integer
                            ''sSQL = "SELECT COUNT(DocEntry)AS count FROM [@OOBR]"
                            'sSQL = "SELECT Max(DocEntry)AS count FROM [@OOBR]"
                            'oLineRec = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
                            'oLineRec.DoQuery(sSQL)
                            'logno = CInt(oLineRec.Fields.Item(0).Value) + 1
                            'oForm.Items.Item("LogVal").Specific().Value = logno
                        End If
                    End If
            End Select
            If pVal.EventType = SAPbouiCOM.BoEventTypes.et_CHOOSE_FROM_LIST Then
                Dim oCFLEvento As SAPbouiCOM.IChooseFromListEvent
                oCFLEvento = pVal
                Dim sCFL_ID As String
                sCFL_ID = oCFLEvento.ChooseFromListUID
                Dim oCFL As SAPbouiCOM.ChooseFromList
                oCFL = oForm.ChooseFromLists.Item(sCFL_ID)
                'SBO_Application.MessageBox(oCFL)
                If oCFLEvento.BeforeAction = False Then
                    Dim oDataTable As SAPbouiCOM.DataTable
                    oDataTable = oCFLEvento.SelectedObjects
                    ShowValue(pVal, oDataTable, oForm)
                End If
            End If
            Matrix = oForm.Items.Item("Matrix1").Specific
            If ((pVal.ItemUID = "Matrix1") And (pVal.Row = Matrix.RowCount) And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
                Matrix.AddRow(1, -1)
                Matrix.Columns.Item("#").Cells.Item(Matrix.RowCount).Specific.Value = Matrix.RowCount
            End If
            If ((pVal.FormUID = "SM_OBRFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED) Or (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
                For i = 1 To Matrix.RowCount
                    sumdepth += Matrix.Columns.Item("Depth").Cells.Item(i).Specific.Value
                    oForm.Items.Item("DepthVal").Specific().value = sumdepth
                    Dim oDocRec As SAPbobsCOM.Recordset
                    Dim sSQL As String
                    If oDocRec.RecordCount > 0 Then
                        sSQL = ""
                        Dim UpdateRec As SAPbobsCOM.Recordset
                        UpdateRec = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
                        UpdateRec.DoQuery(sSQL)
                    End If
                Next
            End If
            If (FormUID = "SM_OBRFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD) Then
                Windows.Forms.Application.Exit()
            End If
        End Sub
        Private Sub SalesOrdrCFL(ByVal oForm As SAPbouiCOM.Form)
            Try
                Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
                'Dim oCons As SAPbouiCOM.Conditions
                'Dim oCon As SAPbouiCOM.Condition
                oCFLs = oForm.ChooseFromLists
                Dim oCFL As SAPbouiCOM.ChooseFromList
                Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
                oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
                ' Adding 2 CFL, one for the button and one for the edit text.
                oCFLCreationParams.MultiSelection = False
                oCFLCreationParams.ObjectType = "17"
                oCFLCreationParams.UniqueID = "CFL1"
                oCFL = oCFLs.Add(oCFLCreationParams)
                oCFLCreationParams.UniqueID = "CFL2"
                oCFL = oCFLs.Add(oCFLCreationParams)
            Catch
                MsgBox(Err.Description)
            End Try
        End Sub
    error   data already exist in child table

    Imports System
    Imports System.web
    Imports System.Windows.Forms.Form
    Public Class SM_DPSFM
        '// At the begining of every UI API project we should first
        '// establish connection with a running SBO application.
        Private WithEvents SBO_Application As SAPbouiCOM.Application
        Private oForm As SAPbouiCOM.Form
        Dim oButton As SAPbouiCOM.Button
        Dim oOptionBtn As SAPbouiCOM.OptionBtn
        Dim oCheckBox As SAPbouiCOM.CheckBox
        Dim oComboBox As SAPbouiCOM.ComboBox
        Dim oItem As SAPbouiCOM.Item
        Dim oStatic As SAPbouiCOM.StaticText
        Dim oEdittext As SAPbouiCOM.EditText
        Dim oEditItem As SAPbouiCOM.EditText
        Private oMatrix As SAPbouiCOM.Matrix
        Private Matrix2 As SAPbouiCOM.Matrix
        Private oLink As SAPbouiCOM.LinkedButton
        Private oColumns As SAPbouiCOM.Columns
        Private oColumn As SAPbouiCOM.Column
        Private sPath As String
        Private oDBDataSource As SAPbouiCOM.DBDataSource
        Private oCompany As SAPbobsCOM.Company
        Private rs As SAPbobsCOM.Recordset
        Private oLineRec As SAPbobsCOM.Recordset
        Private rs1 As SAPbobsCOM.Recordset
        '// declaring a User data source for the "Remarks" Column
        Private oUserDataSource As SAPbouiCOM.UserDataSource
        Public sErrMsg As String
        Public lErrCode As Long
        Public lRetCode As Long
        Private Sub SetApplication()
            '// Use an SboGuiApi object to establish the connection
            '// with the application and return an initialized appliction object
            Dim SboGuiApi As SAPbouiCOM.SboGuiApi
            Dim sConnectionString As String
            SboGuiApi = New SAPbouiCOM.SboGuiApi
            '// by following the steps specified above, the following
            '// statment should be suficient for either development or run mode
            sConnectionString = Environment.GetCommandLineArgs.GetValue(1)
            '// connect to a running SBO Application
            SboGuiApi.Connect(sConnectionString)
            '// get an initialized application object
            SBO_Application = SboGuiApi.GetApplication()
        End Sub
        Private Sub AddMenuItems()
            '// Let's add a pop-up menu item and 2 sub menu items
            Dim oMenus As SAPbouiCOM.Menus               '//  use the following object to add menu
            Dim oMenuItem As SAPbouiCOM.MenuItem
            '// Get the menus collection from the application
            oMenus = SBO_Application.Menus
            Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
            oCreationPackage = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams)
            oMenuItem = SBO_Application.Menus.Item("43520") 'moudles'
            sPath = System.Windows.Forms.Application.StartupPath()
            sPath = sPath.Remove(sPath.Length - 3, 3)
            '' Creation parameters
            oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_POPUP
            oCreationPackage.UniqueID = "SM_DMID"
            oCreationPackage.String = "Dealer Mgmt."
            'oCreationPackage.Image = sPath & "dealermg.gif"
            oCreationPackage.Image = IO.Directory.GetParent(Application.StartupPath).ToString & "\CFL.BMP"
            '' we add our menu at the buttom of the list
            oCreationPackage.Position = oMenuItem.SubMenus.Count + 1
            oMenus = oMenuItem.SubMenus
            Try ' If the menu already exists this code will fail
                oMenus.AddEx(oCreationPackage)
                '' Get the menu collection of the newly added pop-up item
                oMenuItem = SBO_Application.Menus.Item("SM_DMID")
                oMenus = oMenuItem.SubMenus
                '' Add Sub Menu Items
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = "SM_DPSMENU"         ''Unique ID of 1st Sub Menu item
                oCreationPackage.String = "Dumper Performance Sheet"
                oMenus.AddEx(oCreationPackage)
            Catch er As Exception ' Error Handling
                SBO_Application.MessageBox(er.Message)
            End Try
        End Sub
        'Private Sub AddMenuItems()
        '    '// Let's add a pop-up menu item and 2 sub menu items
        '    Dim oMenus As SAPbouiCOM.Menus               '//  use the following object to add menu
        '    Dim oMenuItem As SAPbouiCOM.MenuItem
        '    '// Get the menus collection from the application
        '    oMenus = SBO_Application.Menus
        '    Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
        '    oMenuItem = SBO_Application.Menus.Item("SM_DMID")
        '    sPath = System.Windows.Forms.Application.StartupPath()
        '    sPath = sPath.Remove(sPath.Length - 3, 3)
        '    oMenus = oMenuItem.SubMenus
        '    Try ' If the menu already exists this code will fail
        '        '' Add Sub Menu Items
        '        oCreationPackage = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams)
        '        oCreationPackage.UniqueID = "SM_DPSMENU"
        '        oCreationPackage.String = "Dumper Performance Sheet"
        '        oCreationPackage.Position = 1
        '        oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
        '        oMenuItem = oMenus.AddEx(oCreationPackage)
        '    Catch er As Exception ' Error Handling
        '        SBO_Application.MessageBox(er.Message)
        '    End Try
        'End Sub
        Private Sub SBO_Application_MenuEvent(ByRef pVal As SAPbouiCOM.MenuEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.MenuEvent
            If pVal.BeforeAction = False Then
                Select Case pVal.MenuUID
                    Case "SM_DPSMENU"
                        diplay_DPSform() ''Function to display 1st Sub Menu item (D.P.S.) form.
                End Select
            End If
        End Sub
        'Function to draw the Dumper Performance Sheet.
        Private Sub diplay_DPSform()
            Dim oForm As SAPbouiCOM.Form
            Dim val1 As String
            Try
                oForm = SBO_Application.Forms.Item("SM_DPSFM")
                SBO_Application.MessageBox("Form Already Open")
            Catch ex As Exception
                Dim fcp As SAPbouiCOM.FormCreationParams
                fcp = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_FormCreationParams)
                fcp.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Fixed
                fcp.FormType = "SM_DPSFM"
                fcp.ObjectType = "SM_DPS"
                fcp.UniqueID = "SM_DPSFM"
                fcp.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Sizable
                oForm = SBO_Application.Forms.AddEx(fcp)
                oForm.AutoManaged = False
                SalesOrdrCFL(oForm)             ''Function to see the list of Sales Orders.
                'OBRCFL(oForm)
                itemlist(oForm)
                DrawDPSForm(oForm)
                ''Function to Draw the form for 1st Sub Menu
            End Try
            oForm.DataBrowser.BrowseBy = "DpsVal"
            oForm.Visible = True
        End Sub
        ''Function to Draw the form for Sub Menu
        Private Sub DrawDPSForm(ByVal oForm As SAPbouiCOM.Form)
            Dim oItem As SAPbouiCOM.Item
            Dim oButton As SAPbouiCOM.Button
            Dim oEdittext As SAPbouiCOM.EditText
            Dim val As String
            ''Form specifications
            oForm.Title = "Dumper Performance Sheet"
            oForm.Left = 320 '340
            oForm.ClientWidth = 550 '350
            oForm.Top = 100
            oForm.ClientHeight = 422 '393
            'Adding a datasource to the form
            oDBDataSource = oForm.DataSources.DBDataSources.Add("@ODPS")
            ''Order Text
            oItem = oForm.Items.Add("OrdrTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 5
            oItem.Width = 100
            oItem.Top = 10
            ' oItem.AffectsFormMode = False
            oItem.LinkTo = "OrdrVal"
            oStatic = oItem.Specific
            oStatic.Caption = "Order No."
            ''Order Date Text
            oItem = oForm.Items.Add("OrdrdtTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 5
            oItem.Width = 100
            oItem.Top = 27
            oItem.AffectsFormMode = False
            oItem.LinkTo = "OrdrdtVal"
            oStatic = oItem.Specific
            oStatic.Caption = "Order Date"
            ''Customer Text Box
            oItem = oForm.Items.Add("CustTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 5
            oItem.Width = 100
            oItem.Top = 44
            oItem.AffectsFormMode = False
            oItem.LinkTo = "CustVal"
            oStatic = oItem.Specific
            oStatic.Caption = "Customer Name"
            ''DPS Text
            oItem = oForm.Items.Add("DpsTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 290 '271
            oItem.Width = 50  '100
            oItem.Top = 10
            oItem.AffectsFormMode = False
            oItem.LinkTo = "DpsVal"
            oStatic = oItem.Specific
            oStatic.Caption = "DPS No."
            ''DPS Date
            oItem = oForm.Items.Add("DateTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 290
            oItem.Width = 50 '100
            oItem.Top = 27
            oItem.AffectsFormMode = False
            oItem.LinkTo = "DateVal"
            oStatic = oItem.Specific
            oStatic.Caption = "DPS Date"
            ''Log No. Text
            oItem = oForm.Items.Add("LogTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 5 '290
            oItem.Width = 100 '50 '100
            oItem.Top = 61
            oItem.AffectsFormMode = False
            oItem.LinkTo = "LogVal"
            oStatic = oItem.Specific
            oStatic.Caption = "Log No."
            ''SuperVisor Text
            oItem = oForm.Items.Add("SupTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 5
            oItem.Width = 100
            oItem.Top = 300
            oItem.AffectsFormMode = False
            oItem.LinkTo = "SupVal"
            oStatic = oItem.Specific
            oStatic.Caption = "Supervisor"
            ''Total Trip for S/M Text
            oItem = oForm.Items.Add("Trip1Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 290
            oItem.Width = 140 '100
            oItem.Top = 300
            oItem.AffectsFormMode = False
            oItem.LinkTo = "Trip1Val"
            oStatic = oItem.Specific
            oStatic.Caption = "Total Trips Made For S/M"
            ''Remarks Text
            oItem = oForm.Items.Add("RmksTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 5
            oItem.Width = 50 '100
            oItem.Top = 320
            oItem.AffectsFormMode = False
            oItem.LinkTo = "RmksVal"
            oStatic = oItem.Specific
            oStatic.Caption = "Remarks"
            ''Total Trip for LATERITE Text
            oItem = oForm.Items.Add("Trip2Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 290
            oItem.Width = 140 '100
            oItem.Top = 320
            oItem.AffectsFormMode = False
            oItem.LinkTo = "Trip2Val"
            oStatic = oItem.Specific
            oStatic.Caption = "Total Trips Made For LAT"
            ''Total Trip for BAUXITE Text
            oItem = oForm.Items.Add("Trip3Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 290
            oItem.Width = 140 '100
            oItem.Top = 340
            oItem.AffectsFormMode = False
            oItem.LinkTo = "Trip3Val"
            oStatic = oItem.Specific
            oStatic.Caption = "Total Trips Made For BAUX "
            ''Total Trip for Item4 Text
            oItem = oForm.Items.Add("Trip4Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 290
            oItem.Width = 140 '100
            oItem.Top = 360
            oItem.AffectsFormMode = False
            oItem.LinkTo = "Trip4Val"
            oStatic = oItem.Specific
            oStatic.Caption = "Total Trips Made For Itm4"
            ''Total Trip for Item5 Text
            oItem = oForm.Items.Add("Trip5Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            oItem.Left = 290
            oItem.Width = 140 '100
            oItem.Top = 380
            oItem.AffectsFormMode = False
            oItem.LinkTo = "Trip5Val"
            oStatic = oItem.Specific
            oStatic.Caption = "Total Trips Made For Itm5"
            'oItem = oForm.Items.Add("Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
            'oItem.Left = 106
            'oItem.Width = 4
            'oItem.Top = 10
            '' oItem.AffectsFormMode = False
            ''oItem.LinkTo = "OrdrVal" '"Vndval"
            'oStatic = oItem.Specific
            ''oStatic.Caption = "Order No."
            'oLink = oItem.ExtendedObject '// new property
            'oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Order
            Dim oEditlogdt As SAPbouiCOM.EditText
            ' Dim oEdittype As SAPbouiCOM.EditText
            'Dim oEditloc As SAPbouiCOM.EditText
            Dim oEditordr As SAPbouiCOM.EditText
            Dim oEditorddt As SAPbouiCOM.EditText
            Dim oEditcust As SAPbouiCOM.EditText
            Dim oEditdep As SAPbouiCOM.EditText
            Dim oEditsup As SAPbouiCOM.EditText
            Dim oEditrmrk As SAPbouiCOM.EditText
            Dim val1 As String
            Dim sSQL As String
            Dim logno As Integer
            sSQL = "SELECT Max(DocEntry)AS count FROM [@ODPS]"
            oLineRec = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
            oLineRec.DoQuery(sSQL)
            logno = CInt(oLineRec.Fields.Item(0).Value) + 1
            ''DPS No. Edit Box
            oItem = oForm.Items.Add("DpsVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 376
            oItem.Width = 160
            oItem.Top = 10
            oItem.AffectsFormMode = True
            oItem.LinkTo = "DpsTxt"
            oItem.Enabled = False
            oEdittext = oItem.Specific
            oEdittext.DataBind.SetBound(True, "@ODPS", "DocEntry")
            oEdittext.Value = logno
            ''Order Edit Text Box
            oItem = oForm.Items.Add("OrdrVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 110
            oItem.Width = 160
            oItem.Top = 10
            oItem.LinkTo = "OrdrTxt"
            oItem.AffectsFormMode = True
            oEditordr = oItem.Specific
            '' Adding Choose From List
            oEditordr.DataBind.SetBound(True, "@ODPS", "U_ordrno")
            ' Adding 2 Choose From List Object, ONE FOR EDIT TEXT AND ONE FOR BUTTON.
            oEditordr.ChooseFromListUID = "CFL1"
            ''We set the alias only after the UID is set, the alias is the field in the database
            ''It compares the value in the edit text and narrows the CFL accrodingly
            oEditordr.ChooseFromListAlias = "DocEntry" '"CardCode"
            ''Order Date Edit Box
            oItem = oForm.Items.Add("OrdrdtVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 110
            oItem.Width = 160
            oItem.Top = 27
            oItem.AffectsFormMode = True
            oItem.LinkTo = "OrdrdtTxt"
            oItem.Enabled = False
            oEditorddt = oItem.Specific
            oEditorddt.DataBind.SetBound(True, "@ODPS", "U_ordrdt")
            ' oEditorddt.String = Format(DateTime.Today, "ddMMyy")
            ''Customer Edit Box
            oItem = oForm.Items.Add("CustVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 110
            oItem.Width = 160
            oItem.Top = 44
            oItem.AffectsFormMode = True
            oItem.LinkTo = "CustTxt"
            oItem.Enabled = False
            oEditcust = oItem.Specific
            oEditcust.DataBind.SetBound(True, "@ODPS", "U_customer")
            ''DPS Date Edit Box
            oItem = oForm.Items.Add("DateVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 376
            oItem.Width = 160
            oItem.Top = 27
            oItem.AffectsFormMode = True
            oItem.LinkTo = "DateTxt"
            oEditlogdt = oItem.Specific
            oEditlogdt.DataBind.SetBound(True, "@ODPS", "U_dpsdt")
            oEditlogdt.String = Format(DateTime.Today, "ddMMyy")
            ''Log No. Edit
            oItem = oForm.Items.Add("LogVal", SAPbouiCOM.BoFormItemTypes.it_COMBO_BOX)
            oItem.Left = 110
            oItem.Width = 160
            oItem.Top = 61
            oItem.AffectsFormMode = True
            oItem.LinkTo = "LogTxt"
            oComboBox = oItem.Specific
            AddLogCodeCombo(oForm, val1)
            'AddLogCodeCombo(oComboBox)
            oComboBox.DataBind.SetBound(True, "@ODPS", "U_logno")
            'oComboBox.ValidValues.Add("", "")
            'oComboBox.Select(0, SAPbouiCOM.BoSearchKey.psk_Index)
            ''Total Trip for S/M Edit Box
            oItem = oForm.Items.Add("Trip1Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 430 '376
            oItem.Width = 105 '80
            oItem.Top = 300
            oItem.AffectsFormMode = True
            oItem.LinkTo = "Trip1Txt"
            oItem.Enabled = False
            oEditdep = oItem.Specific
            oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripsm")
            ''SuperVisor Edit Box
            oItem = oForm.Items.Add("SupVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 110
            oItem.Width = 160
            oItem.Top = 300
            oItem.AffectsFormMode = True
            oItem.LinkTo = "SupTxt"
            oEditsup = oItem.Specific
            oEditsup.DataBind.SetBound(True, "@ODPS", "U_suprvsr")
            ''Remarks Edit Box
            oItem = oForm.Items.Add("RmksVal", SAPbouiCOM.BoFormItemTypes.it_EXTEDIT)
            oItem.Left = 110
            oItem.Width = 160
            oItem.Top = 320
            oItem.AffectsFormMode = True
            oItem.LinkTo = "RmksTxt"
            oEditrmrk = oItem.Specific
            oEditrmrk.DataBind.SetBound(True, "@ODPS", "U_remark")
            ''Total Trip for Laterite Edit Box
            oItem = oForm.Items.Add("Trip2Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 430 '376
            oItem.Width = 105 '80
            oItem.Top = 320
            oItem.AffectsFormMode = True
            oItem.LinkTo = "Trip2Txt"
            oItem.Enabled = False
            oEditdep = oItem.Specific
            oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltriplat")
            ''Total Trip for Bauxite Edit Box
            oItem = oForm.Items.Add("Trip3Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 430 '376
            oItem.Width = 105 '80
            oItem.Top = 340
            oItem.AffectsFormMode = True
            oItem.LinkTo = "Trip3Txt"
            oItem.Enabled = False
            oEditdep = oItem.Specific
            oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripbx")
            ''Total Trip for Item4 Edit Box
            oItem = oForm.Items.Add("Trip4Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 430 '376
            oItem.Width = 105 '80
            oItem.Top = 360
            oItem.AffectsFormMode = True
            oItem.LinkTo = "Trip4Txt"
            oItem.Enabled = False
            oEditdep = oItem.Specific
            oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripitm4")
            ''Total Trip for Item 5 Edit Box
            oItem = oForm.Items.Add("Trip5Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oItem.Left = 430 '376
            oItem.Width = 105 '160
            oItem.Top = 380
            oItem.AffectsFormMode = True
            oItem.LinkTo = "Trip5Txt"
            oItem.Enabled = False
            oEditdep = oItem.Specific
            oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripitm5")
            '// Adding a OrderCFL button
            oItem = oForm.Items.Add("Button1", SAPbouiCOM.BoFormItemTypes.it_BUTTON)
            oItem.Left = 269 '271
            oItem.Top = 8
            oButton = oItem.Specific
            oButton.Type = SAPbouiCOM.BoButtonTypes.bt_Image
            oItem.Width = 20
            oItem.Height = 20
            oButton.Image = IO.Directory.GetParent(Application.StartupPath).ToString & "\CFL.BMP"
            'SBO_Application.MessageBox(oButton.Image)
            'oButton.Image = "C:\Documents and Settings\subratac\My Documents\Visual Studio 2005\Projects\TestAddonApplication\TestAddonApplication\bin\CFL.BMP"
            '' Adding Choose From List Object FOR  BUTTON.
            oButton.ChooseFromListUID = "CFL2"
            'Adding a datasource to the form
            oDBDataSource = oForm.DataSources.DBDataSources.Add("@DPS1")
            '// Adding a Matrix item
            oItem = oForm.Items.Add("Matrix1", SAPbouiCOM.BoFormItemTypes.it_MATRIX)
            oItem.Left = 5
            oItem.Width = 550 '350
            oItem.Top = 95
            oItem.Height = 200 '150
            oMatrix = oItem.Specific
            oColumns = oMatrix.Columns
            '// Adding Culomn items to the matrix
            oColumn = oColumns.Add("#", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oColumn.TitleObject.Caption = "#"
            oColumn.Width = 50
            oColumn.Editable = False
            'oColumn.DataBind.SetBound(True, "@DPS1", "U_holeno")
            '// Add a column for Vehicle no.
            'oColumn = oColumns.Add("Vhcleno", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            'oColumn.TitleObject.Caption = "Vehicle No."
            'oColumn.Width = 80
            'oColumn.Editable = True
            oColumn = oColumns.Add("Vhcleno", SAPbouiCOM.BoFormItemTypes.it_LINKED_BUTTON)
            oColumn.TitleObject.Caption = "Vehicle No."
            oColumn.Width = 80
            oColumn.Editable = True
            oLink = oColumn.ExtendedObject
            oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Items
            oColumn.DataBind.SetBound(True, "@DPS1", "U_vehcleno")
            oColumn.ChooseFromListUID = "CFL5"
            oColumn.ChooseFromListAlias = "ItemCode"
            '// Add a column for vehicle name
            oColumn = oColumns.Add("Vhclenm", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oColumn.TitleObject.Caption = "Vehicle Name"
            oColumn.Width = 80
            oColumn.Editable = True
            oColumn.DataBind.SetBound(True, "@DPS1", "U_vehclenm")
            '// Add a column for Trip S/M
            oColumn = oColumns.Add("Trpsm", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oColumn.TitleObject.Caption = "Trip(S/M)"
            oColumn.Width = 80
            oColumn.Editable = True
            oColumn.DataBind.SetBound(True, "@DPS1", "U_tripsm")
            '// Add a column for Trip Laterite
            oColumn = oColumns.Add("Trplat", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oColumn.TitleObject.Caption = "Trip(Laterite)"
            oColumn.Width = 80
            oColumn.Editable = True
            oColumn.DataBind.SetBound(True, "@DPS1", "U_triplat")
            '// Add a column for Trip Bauxite
            oColumn = oColumns.Add("Trpbax", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oColumn.TitleObject.Caption = "Trip(Bauxite)"
            oColumn.Width = 80
            oColumn.Editable = True
            oColumn.DataBind.SetBound(True, "@DPS1", "U_tripbx")
            '// Add a column for Item 4
            oColumn = oColumns.Add("Trpitm4", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oColumn.TitleObject.Caption = "Trip(Item 4)"
            oColumn.Width = 80
            oColumn.Editable = True
            oColumn.DataBind.SetBound(True, "@DPS1", "U_tripitm4")
            '// Add a column for Item 5
            oColumn = oColumns.Add("Trpitm5", SAPbouiCOM.BoFormItemTypes.it_EDIT)
            oColumn.TitleObject.Caption = "Trip(Item 5)"
            oColumn.Width = 80
            oColumn.Editable = True
            oColumn.DataBind.SetBound(True, "@DPS1", "U_tripitm5")
            ''// Link the column to the Stock Transfer master data system form
            'oLink = oColumn.ExtendedObject
            'oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_StockTransfers
            '// Adding a OK button
            oItem = oForm.Items.Add("1", SAPbouiCOM.BoFormItemTypes.it_BUTTON)
            oItem.Left = 5
            oItem.Width = 65
            oItem.Top = 400 '372
            oItem.Height = 20
            oButton = oItem.Specific
            '// Adding a Cancel button
            oItem = oForm.Items.Add("2", SAPbouiCOM.BoFormItemTypes.it_BUTTON)
            oItem.Left = 75
            oItem.Width = 65
            oItem.Top = 400 '372
            oItem.Height = 20
            oButton = oItem.Specific
            AddLogCodeCombo(oForm, val)
            oForm.DataBrowser.BrowseBy = "DpsVal"
        End Sub
        Public Sub New()
            MyBase.New()
            Try
                SetApplication()
                ' Set The Connection Context
                If Not SetConnectionContext() = 0 Then
                    SBO_Application.MessageBox("Failed setting a connection to DI API")
                    End ' Terminating the Add-On Application
                End If
                If Not ConnectToCompany() = 0 Then
                    SBO_Application.MessageBox("Failed connecting to the company's Data Base")
                    End ' Terminating the Add-On Application
                End If
                'SBO_Application.MessageBox("DI Connected To: " & oCompany.CompanyName)
            Catch
                System.Windows.Forms.MessageBox.Show("SBO application not found")
            End Try
            AddMenuItems()
        End Sub
        Private Sub SBO_Application_AppEvent(ByVal EventType As SAPbouiCOM.BoAppEventTypes) Handles SBO_Application.AppEvent
            Select Case EventType
                Case SAPbouiCOM.BoAppEventTypes.aet_ShutDown
                    SBO_Application.MessageBox("A Shut Down Event has been caught" & _
                        Environment.NewLine() & "Terminating 'Complex Form' Add On...")
                    '// Take care of terminating your AddOn application
                    System.Windows.Forms.Application.Exit()
            End Select
        End Sub
        Private Function SetConnectionContext() As Integer
            Dim sCookie As String
            Dim sConnectionContext As String
            ' Dim lRetCode As Integer
            '// First initialize the Company object
            oCompany = New SAPbobsCOM.Company
            '// Acquire the connection context cookie from the DI API.
            sCookie = oCompany.GetContextCookie
            '// Retrieve the connection context string from the UI API using the
            '// acquired cookie.
            sConnectionContext = SBO_Application.Company.GetConnectionContext(sCookie)
            '// before setting the SBO Login Context make sure the company is not
            '// connected
            If oCompany.Connected = True Then
                oCompany.Disconnect()
            End If
            '// Set the connection context information to the DI API.
            SetConnectionContext = oCompany.SetSboLoginContext(sConnectionContext)
        End Function
        Private Function ConnectToCompany() As Integer
            '// Make sure you're not already connected.
            If oCompany.Connected = True Then
                oCompany.Disconnect()
            End If
            '// Establish the connection to the company database.
            ConnectToCompany = oCompany.Connect
        End Function
        Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
            Dim oForm As SAPbouiCOM.Form
            oForm = SBO_Application.Forms.Item(FormUID)
            Dim oMatrix As SAPbouiCOM.Matrix
            Dim count As Integer
            Dim oDataSrc As SAPbouiCOM.DataSource
            Select Case pVal.EventType
                Case SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED
                    '// Check if the event was raised by one of the Folder items
                    '// and change the form's pane level
                Case SAPbouiCOM.BoEventTypes.et_CLICK
                    ' If pVal.ItemUID = "1" And pVal.BeforeAction = True Then
                    'If oForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE Or oForm.Mode = SAPbouiCOM.BoFormMode.fm_UPDATE_MODE Then
                    'If Validation() = False Then
                    'If oForm.Items.Item("OrdrVal").Specific().Value = "" Then
                    '    BubbleEvent = False
                    '    ' SBO_Application.MessageBox(" Please Enter  The Order No ")
                    '    SBO_Application.StatusBar.SetText("Enter The  Order  No - 3029 Item Is Not Selectable  ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                    '    oForm.Items.Item("OrdrVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                    '    Exit Sub
                    'End If
                    'If oForm.Items.Item("SupVal").Specific().Value = "" Then
                    '    BubbleEvent = False
                    '    ' SBO_Application.MessageBox(" Please Enter  The Order No ")
                    '    SBO_Application.StatusBar.SetText("Enter The  Supervisor - 3029 Item Is Not Selectable  ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                    '    oForm.Items.Item("SupVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                    '    Exit Sub
                    'End If
                    If pVal.FormMode = 2 And pVal.ItemUID = "1" And pVal.BeforeAction = False Then
                        'In UPDATE Mode
                        ' strDocNum = oForm.Items.Item("txtCode").Specific.String
                        ' If oForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE And oForm.Mode = SAPbouiCOM.BoFormMode.fm_UPDATE_MODE Then
                        Dim strdocnum As String
                        strdocnum = oForm.Items.Item("DpsVal").Specific.String
                        oMatrix = oForm.Items.Item("Matrix1").Specific
                        oDataSrc = oForm.DataSources.DBDataSources.Add("@DPS1")
                        oForm.Freeze(True)
                        UpdateMatrixRowsDel(oForm)
                        oMatrix.FlushToDataSource()
                        For count = 1 To oMatrix.RowCount
                            oDataSrc.SetValue("LineId", count - 1, oDataSrc.GetValue("DocEntry", count - 1))
                        Next
                        oMatrix.LoadFromDataSource()
                        oForm.Freeze(False)
                    End If
                    '  End If
                    'End If
                    'End If
            End Select
            If pVal.EventType = SAPbouiCOM.BoEventTypes.et_CHOOSE_FROM_LIST Then
                Dim oCFLEvento As SAPbouiCOM.IChooseFromListEvent
                oCFLEvento = pVal
                Dim sCFL_ID As String
                sCFL_ID = oCFLEvento.ChooseFromListUID
                Dim oCFL As SAPbouiCOM.ChooseFromList
                oCFL = oForm.ChooseFromLists.Item(sCFL_ID)
                If oCFLEvento.BeforeAction = False Then
                    Dim oDataTable As SAPbouiCOM.DataTable
                    oDataTable = oCFLEvento.SelectedObjects
                    ''//Function to show values in EditBoxes and Matrix after pressing TAB button.
                    ShowAllData(pVal, oDataTable, oForm)
                End If
            End If
            Dim Matrix As SAPbouiCOM.Matrix
            Matrix = oForm.Items.Item("Matrix1").Specific
            'If ((pVal.ItemUID = "Matrix1") And (pVal.Row = Matrix.RowCount) And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
            '    ' Matrix.AddRow(1, -1)
            '    Matrix.AddRow(1, -1)
            '    Matrix.Columns.Item("#").Cells.Item(Matrix.RowCount).Specific.Value = Matrix.RowCount
            'End If
            If (FormUID = "SM_DPSFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD) Then
                Windows.Forms.Application.Exit()
            End If
            'ShowTripTotal(pVal, oForm)
            Dim i As Integer
            Dim tripsm As Integer = 0
            Dim triplat As Integer = 0
            Dim tripbax As Integer = 0
            Dim tripitm4 As Integer = 0
            Dim tripitm5 As Integer = 0
            If ((pVal.FormUID = "SM_DPSFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED) Or (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
                For i = 1 To Matrix.RowCount
                       tripsm += Matrix.Columns.Item(3).Cells.Item(i).Specific.Value
                    oForm.Items.Item("Trip1Val").Specific().value = tripsm
                    triplat += Matrix.Columns.Item(4).Cells.Item(i).Specific.Value
                    oForm.Items.Item("Trip2Val").Specific().value = triplat
                    tripbax += Matrix.Columns.Item(5).Cells.Item(i).Specific.Value
                    oForm.Items.Item("Trip3Val").Specific().value = tripbax
                    tripitm4 += Matrix.Columns.Item(6).Cells.Item(i).Specific.Value
                    oForm.Items.Item("Trip4Val").Specific().value = tripitm4
                    tripitm5 += Matrix.Columns.Item(7).Cells.Item(i).Specific.Value
                    oForm.Items.Item("Trip5Val").Specific().value = tripitm5
                    Matrix.LoadFromDataSource()
                Next
            End If
        End Sub
        Private Sub SalesOrdrCFL(ByVal oForm As SAPbouiCOM.Form)
            Try
                Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
                'Dim oCons As SAPbouiCOM.Conditions
                'Dim oCon As SAPbouiCOM.Condition
                oCFLs = oForm.ChooseFromLists
                Dim oCFL As SAPbouiCOM.ChooseFromList
                Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
                oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
                ' Adding 2 CFL, one for the button and one for the edit text.
                oCFLCreationParams.MultiSelection = False
                oCFLCreationParams.ObjectType = "17"
                oCFLCreationParams.UniqueID = "CFL1"
                oCFL = oCFLs.Add(oCFLCreationParams)
                oCFLCreationParams.UniqueID = "CFL2"
                oCFL = oCFLs.Add(oCFLCreationParams)
            Catch
                MsgBox(Err.Description)
            End Try
        End Sub
        Private Sub OBRCFL(ByVal oForm As SAPbouiCOM.Form)
            Try
                Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
                ' Dim oCons As SAPbouiCOM.Conditions
                ' Dim oCon As SAPbouiCOM.Condition
                oCFLs = oForm.ChooseFromLists
                Dim oCFL As SAPbouiCOM.ChooseFromList
                Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
                oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
                ' Adding 2 CFL, one for the button and one for the edit text.
                oCFLCreationParams.MultiSelection = False
                oCFLCreationParams.ObjectType = "SM_OOBR"
                oCFLCreationParams.UniqueID = "CFL3"
                oCFL = oCFLs.Add(oCFLCreationParams)
                '' Adding Conditions to CFL1
                'oCons = oCFL.GetConditions()
                'oCon = oCons.Add()
                'oCon.Alias = "U_ordrdt" '"Order Date" '"U_ordrdt" '"Balance"
                'oCon.Operation = SAPbouiCOM.BoConditionOperation.co_EQUAL
                'oCon.CondVal = oForm.Items.Item("OrdrdtVal").Specific().string  '"120000"
                'oCFL.SetConditions(oCons)
            Catch
                MsgBox(Err.Description)
            End Try
        End Sub
        Private Sub itemlist(ByVal oForm As SAPbouiCOM.Form)
            Try
                Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
                '  Dim oCons As SAPbouiCOM.Conditions
                '  Dim oCon As SAPbouiCOM.Condition
                oCFLs = oForm.ChooseFromLists
                Dim oCFL As SAPbouiCOM.ChooseFromList
                Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
                oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
                ' Adding 2 CFL, one for the button and one for the edit text.
                oCFLCreationParams.MultiSelection = False
                oCFLCreationParams.ObjectType = "4"
                oCFLCreationParams.UniqueID = "CFL5"
                oCFL = oCFLs.Add(oCFLCreationParams)
                oCFLCreationParams.UniqueID = "CFL5"
                oCFL = oCFLs.Add(oCFLCreationParams)
                'oCFL = oCFLs.Add(oCFLCreationParams)
                'oCons = oCFL.GetConditions()
                'oCon = oCons.Add()
                'oCon.Alias = "ItemCode"
                'oCon.Operation = SAPbouiCOM.BoConditionOperation.co_START
                'oCon.CondVal = "V"
                'oCFL.SetConditions(oCons)
            Catch
                Exit Sub
                MsgBox(Err.Description)
            End Try
        End Sub
        Private Sub ShowAllData(ByRef pVal As SAPbouiCOM.ItemEvent, ByVal oDatatable As SAPbouiCOM.DataTable, ByVal oForm As SAPbouiCOM.Form)
            Dim val, val2, val4 As String
            Dim val1 As String
            Dim i As Integer
            Dim oCombo As SAPbouiCOM.ComboBox
            oCombo = oForm.Items.Item("LogVal").Specific
            Dim Matrix As SAPbouiCO

  • SPry menubar floating submenu's

    I've been tackling with this spry menubar trying to get it so that menu's float over content in div's or frames instead of positioning the content below the extended menu.
    Here is my website www.nathanielmcmahon.com
    I had it working in one browser before but not others.  Now firefox and iexplorer push content below and chrome pushes content to the side.
    I want the menu to display over content with an opaque background
    Below is the modified sprymenubar css.
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        z-index: 1200;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        text-align: left;
        cursor: pointer;
        width: auto;
        float: left;
        height: inherit;
        position: relative;
    Submenus should appear below their parent (top: 0) with a higher
    z-index, but they are initially off the left side of the screen
    (-1000em) */
    ul.MenuBarHorizontal ul
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: 10em;
        position: relative;
        left: -1000em;
        z-index: 1300;
        visibility: visible;
    Submenu that is showing with class designation MenuBarSubmenuVisible,
    we set left to auto so it comes onto the screen below its parent menu
    item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: 115px;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        width: 13em;
        z-index: 2000;
        height: 35px;
        background-image: none;
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../assets/images
    /transparent-png.png', sizingMethod='fixed');
        background-color: #FFF;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        margin: -27% 0 0 75%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        padding: .5em;
        color: #999999;
        text-decoration: none;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 16px;
        font-weight: bold;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        color: #999999;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal
    a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover,
    ul.MenuBarHorizontal a.MenuBarSubmenuVisible
        color: #999999;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    Menu items that have a submenu have the class designation
    MenuBarItemSubmenu and are set to use a background image positioned on
    the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-image: url(../SpryAssets/SpryMenuBarDown.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    Menu items that have a submenu have the class designation
    MenuBarItemSubmenu and are set to use a background image positioned on
    the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-image: url(../SpryAssets/SpryMenuBarRight.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    Menu items that are open with submenus have the class designation
    MenuBarItemSubmenuHover and are set to use a "hover" background image
    positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
        background-image: url(../SpryAssets/SpryMenuBarDownHover.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    Menu items that are open with submenus have the class designation
    MenuBarItemSubmenuHover and are set to use a "hover" background image
    positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
        background-image: url(../SpryAssets/SpryMenuBarRightHover.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        z-index: 1010;
        position: absolute;
        ul.MenuBarHorizontal li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;

    I've been tackling with this spry menubar trying to get it so that menu's float over content in div's or frames instead of positioning the content below the extended menu.
    Here is my website www.nathanielmcmahon.com
    I had it working in one browser before but not others.  Now firefox and iexplorer push content below and chrome pushes content to the side.
    I want the menu to display over content with an opaque background
    Below is the modified sprymenubar css.
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        z-index: 1200;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        text-align: left;
        cursor: pointer;
        width: auto;
        float: left;
        height: inherit;
        position: relative;
    Submenus should appear below their parent (top: 0) with a higher
    z-index, but they are initially off the left side of the screen
    (-1000em) */
    ul.MenuBarHorizontal ul
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: 10em;
        position: relative;
        left: -1000em;
        z-index: 1300;
        visibility: visible;
    Submenu that is showing with class designation MenuBarSubmenuVisible,
    we set left to auto so it comes onto the screen below its parent menu
    item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: 115px;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        width: 13em;
        z-index: 2000;
        height: 35px;
        background-image: none;
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../assets/images
    /transparent-png.png', sizingMethod='fixed');
        background-color: #FFF;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        margin: -27% 0 0 75%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        padding: .5em;
        color: #999999;
        text-decoration: none;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 16px;
        font-weight: bold;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        color: #999999;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal
    a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover,
    ul.MenuBarHorizontal a.MenuBarSubmenuVisible
        color: #999999;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    Menu items that have a submenu have the class designation
    MenuBarItemSubmenu and are set to use a background image positioned on
    the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-image: url(../SpryAssets/SpryMenuBarDown.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    Menu items that have a submenu have the class designation
    MenuBarItemSubmenu and are set to use a background image positioned on
    the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-image: url(../SpryAssets/SpryMenuBarRight.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    Menu items that are open with submenus have the class designation
    MenuBarItemSubmenuHover and are set to use a "hover" background image
    positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
        background-image: url(../SpryAssets/SpryMenuBarDownHover.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    Menu items that are open with submenus have the class designation
    MenuBarItemSubmenuHover and are set to use a "hover" background image
    positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
        background-image: url(../SpryAssets/SpryMenuBarRightHover.gif);
        background-repeat: no-repeat;
        background-position: 94% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        z-index: 1010;
        position: absolute;
        ul.MenuBarHorizontal li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;

  • Best practice when changing a lot of forms

    Hi gurus,
    if you have a lot of forms to manipulate and a lot of logic to change, what would be the best practice ?
    Making some manipulation objects would be a nice thing. When I think of about 200 items or more on nearly every standard-form in B1 not included the logic behind, my brain gets dizzy
    So there's no way than to keep the code clean and structured. Am I right ????
    What about VB-Classes ?? I'm not sure about the stability of VB.net classes in bigger projects. C# would be nice, but isn't supported as I have in mind.
    Does anyone have experience with big B1 VB.net projects especially concerning the stability of B1 and the resulting performance ?!?!?!???
    The company I'm working for, seems to live from the flexibility of the software
    regards,
    Holger

    No problem,
    only thing to change is the creation of the menu.
    The rest works fine, when using Visualstudio 2003. 2005 Beta  complains much about CLS-compliance.
    Spaghetticode, goodbye
    Regards,
    Holger
    PS: What about the idea of extending this under a opensourcelike thing ? Or is this not allowed by SAP ?
    Code:
            Dim oMenus As SAPbouiCOM.Menus
            Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
                oTechDemoRoot = m_SboApplication.Menus.Item("43520") 'Modules'
                oMenus = oTechDemoRoot.SubMenus
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_POPUP
                oCreationPackage.UniqueID = "ScooterDEMO"
                oCreationPackage.String = strTechDemoRootMenu
                'oCreationPackage.Image = sPath & "VID.bmp"
                'add the menu at the bottom of the list
                oCreationPackage.Position = oTechDemoRoot.SubMenus.Count + 1
                'add subitems and submenus to customized menu root
                oMenus.AddEx(oCreationPackage)
                ' Get the menu collection of the newly added pop-up item
                oMenuItem = m_SboApplication.Menus.Item("ScooterDEMO")
                oMenus = oMenuItem.SubMenus
                ' Add 3 Sub Menu Items
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = m_Name & "Mnu_0"
                oCreationPackage.String = "Speed up your business ;)"
                'oCreationPackage.Image = sPath & "bla.bmp"
                oMenus.AddEx(oCreationPackage)
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = m_Name & "Mnu_1"
                oCreationPackage.String = "UI simple form via code"
                'oCreationPackage.Image = sPath & "bla.bmp"
                oMenus.AddEx(oCreationPackage)
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = m_Name & "Mnu_2"
                oCreationPackage.String = "UI Calculator"
                'oCreationPackage.Image = sPath & "bla.bmp"
                oMenus.AddEx(oCreationPackage)
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = m_Name & "Mnu_3"
                oCreationPackage.String = "UI BusinessPartnerFormExtention"
                'oCreationPackage.Image = sPath & "bla.bmp"
                oMenus.AddEx(oCreationPackage)
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = m_Name & "Mnu_4"
                oCreationPackage.String = "UI-DI UDFieldsCreation"
                'oCreationPackage.Image = sPath & "bla.bmp"
                oMenus.AddEx(oCreationPackage)
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = m_Name & "Mnu_5"
                oCreationPackage.String = "UI Complex form created via code"
                'oCreationPackage.Image = sPath & "bla.bmp"
                oMenus.AddEx(oCreationPackage)
                oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
                oCreationPackage.UniqueID = m_Name & "Mnu_6"
                oCreationPackage.String = "UI .Net lookalike contest ;)"
                'oCreationPackage.Image = sPath & "bla.bmp"
                oMenus.AddEx(oCreationPackage)

  • Is it a solution to use Apple TV and VoiceOver to play my tunes on my home audio system?

    hi, i am visually impaired and want to be able to have voice access to browse my music so that i can easily play them on my home system. when i saw that apple tv supports voice over, this idea came to my mind to have an apple tv connected to my home audio system and share my library on my computer to be able to browse it using apple tv with voice over enabled. this way i have access to my music library and via voice. but i couldn't find a good tutorial to approve if my idea is correct or not. please give me feedback to know if my idea is a correct one or essentially it is not a good solution for such problem.
    thanks a lot

    Yes it should work ok.
    I don't use it normally but once enabled Voice Over states the current menu position.  If the position has submenus it says 'button'.
    For example, I have 2 itunes libraries running currently.
    As I scroll across the columns using a right keypress it says something like  Main Menu and:
    Movies  (right keypress)   Internet   (right keypress) Computers
    On pressing select on Computers the submenu opens showing both shared libraries:
    AlleyCat Mac Mini
    AlleyCat Mac Pro
    The Voice Over announces 'Alley Cat Mac Mini,  Button, One of Two'
    Button seems to indicate a submenu.
    Pressing down key on remote it announces 'Alley Cat Mac Pro, Button, Two of Two'
    Selecting either library lists the media content categories:
    Music / TV Shows / Podcasts etc (order may be different)
    It announces say 'Music, Button, 1 of 6'
    Pressing select ('button') opens the Music category.
    You then have several subcategories inclusing Shuffle/ Search / Music Videos/ Album Artist/ Album / Genre/ Genius etc etc
    I'd personally like Artist at the top but it should be easy to navigate down with a few clicks and you'll soon remember which menu number is your preferred category.
    One say is Artist, there's Shuffle or similar at the top then all artists listed alphabetically.
    So I have maybe:
    a-Ha
    ABBA
    ABC
    Academy of Ancient Music
    Alanis Morrisette
    Alisson Krauss
    etc
    etc
    As you scroll down it says the artist name pretty well for most and says say ABBA, Button, 3 of 227'
    Select takes you to the album/track submeny and process procedes.
    The Apple remote is very simple and should work well, though i think the older white one is more tactile than the new silver one.
    AC

  • Positioning submenus in Muse

    HI, I've added a horizontal menu widget to a site.  I would like the submenus to be positioned vertically underneath each the main navigation 'sections'.
    I've been using the transform options to reposition the submenus and save what I've done.  However, when I click back into the submenus,they jump back to their original position.
    Also, is it possible to alter the states/size/text fonts of the submenus all at once?
    Any clues would be gratefully received.
    Thanks.

    Just in case anybody else has this problem.
    I found another discussion with the same issue...
    In the 'Plan' window, you have to set the 'child pages' horizontally below the top level page for the sub menus to position themselves vertically.
    Ahhhh.... all is well. 

  • IE 7.0 Positioning Error For Menu Bar Submenus

    http://www.cloud9industries.com/clients/jewelryworld/index4.html
    In Internet Explorer 7, the submenu items are displayed
    horizontally rather than vertically (as they are in IE 6.0). I'm
    using Spry 1.6 and the site has been updated to use it as well. Any
    ideas on how to get that fixed. It works fine in IE 6, Safari, and
    Firefox.
    Thanks,
    cloud9industries

    Hi cloud9industries,
    please add position:relative attribute on each ul tag that
    contains the lis for submenu items.
    I'm referring to these:
    <ul style="position:relative;">
    <li style="width:107px; height:20px; background-image:
    url(images/bg/li_bg_1.png)"><a href="#"
    class="style2">Engagement</a></li>
    <li style="width:107px; height:20px; background-image:
    url(images/bg/li_bg_2.png)"><a href="#"
    class="style2">Diamond</a></li>
    </ul>
    <ul style="position:relative;">
    <li style="width:82px; height:20px; background-image:
    url(images/bg/li_bg_1.png)"><a href="#"
    class="style2">Diamond</a></li>
    <li style="width:82px; height:20px; background-image:
    url(images/bg/li_bg_2.png)"><a href="#"
    class="style2">Gemstone</a></li>
    </ul>
    Diana

  • Spry menu Bar I.E. positioning issues?

    Hi,
    I, like many folks I've seen on various forums have the same problem with my spry menu appearing at the top of I.E browsers instead of under the menu bar. I've tried all sorts of fixes that I've found and have updated to the latest version of Spry. I am using CS3. Could anyone please, please help? I'm not sure where else to go as I've spent the last week on the web trying to resolve the issue. Everything works great on Safari and Firefox. My URL is http://www.visiongreeninvestments.org
    Thanks in advance to anyone who can point me in the right direction.
    My CSS is:
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: auto;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        position: relative;
        text-align: left;
        cursor: pointer;
        width: 130px;
        float: left;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        z-index: 1020;
        cursor: default;
        width: 8.2em;
        position: absolute;
        left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: auto;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        width: 8.2em;
        background-image: none;
    ul.MenuBarHorizontal ul li a
        width: 7.8em;
        background-image: none;
        background-color: #669933;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        position: absolute;
        margin: -5% 0 0 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
        border: 0px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        background-color: #669933;
        color: #000066;
        text-decoration: none;
        font-family: Times;
        font-size: 14px;
        font-weight: normal;
        background-image: url(../homepagelayout/greenbarbg.jpg);
        background-repeat: repeat;
        padding-top: 0.5em;
        padding-right: 0.75em;
        padding-bottom: 0.5em;
        padding-left: 0.75em;
        border-top-width: 0px;
        border-right-width: 0px;
        border-bottom-width: 0px;
        border-left-width: 0px;
        border-top-style: none;
        border-right-style: none;
        border-bottom-style: none;
        border-left-style: none;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        background-color: #669933;
        color: #FFF;
        background-image: none;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
        background-color: #669933;
        color: #FFF;
        background-image: none;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-image: url(../homepagelayout/greenbarbg.jpg);
        background-repeat: repeat;
        background-color: #669933;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-image: none;
        background-position: 95% 50%;
        background-color: #669933;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
        background-image: none;
        background-position: 95% 50%;
        background-color: #669933;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
        background-image: none;
        background-repeat: repeat;
        background-position: 95% 50%;
        background-color: #669933;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position: absolute;
        z-index: 1010;
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarHorizontal li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;
        /*insert this bracket/*

    I see that the online version has already been upgraded to Spry 1.61 and that it now works.
    Gramps
    PS Before you change anything, have a look here http://www.dwcourse.com/dreamweaver/ten-commandments-spry-menubars.php#one. This will ensure that you don't make a mess of it this time around.

Maybe you are looking for

  • The report in FI which contains Quantity field with every line item

    Hi Gurus, What are the reports in Finance which contains Qty field with every Line Item reports & reports that contains user name & System Id in it along with other informations e.g. G/L, Ar, AP Thanks & Regds, Santosh Rothe

  • 9.2.0.6 DBCA installation fails on SuSe9 SP1

    Hi all, 2*PIII 800Mhz 40GB Linux SuSe 9 SP1 I istaled Oracle software 9.2.0.4 and then I add 9.2.06 patch. Then I tryied to create database with DBCA but after I try to start creation by clicking OK button in the last step , in the shell I get messag

  • Is it possible to sort songs after using iTunes Match?

    When I used iTunes to sync my songs previously, everything's fine because I can do all in iTunes then press sync. But with the use of iTunes Match, everything seems automatically done through the "cloud". I can't even rearrange the order of my songs,

  • SSL Protocol Error. Certificate is either invalid or common name...

    There is only one website I have found that has this issue for us.  It is collegesource.org.  I have worked with their support but so far we have no solution. I have Windows Vista with IE7, Firefox 3.6 and chrome 4.0 and Adobe Reader 9.3. When I atte

  • Session in Progress - user not logged in.

    I show a user session in EAS with a status of "in progress" for a spreadsheet operation. User claims to not being logged in to Essbase and not to have initiated a worksheet retrieval. This happened before to this same user id and I let their session