Webforms menu modification

webforms menu modification
Is there any way to add to or remove functionality from the menu when deploying forms? i.e. the menu that has the 'Action', 'Edit', 'Query', ..., 'Help', 'Window' drop-down menus? Or is this menu static and not changable. I know you can replace the 'oracle' graphic on the far right of this menu, but can any further modification be done? How dynamic would it be?
Thanks,
Matt.

You can develop your own menu and replace the default menu.
Menu is just a property at the Form level.

Similar Messages

  • Hier Menu Modification

    Currently, we have removed the hiermenu system and replaced it with a system we where more familiar with. However, now I would like to use the hiermenu system if I can customize it to the level that I want. Particularly, I want the top level buttons to be images with rollovers and the sub-level nav to have 2 different twisties that rollover to match the background when highlighted. For examples of what I am talking about follow this link (http://www.ajgtulsa.com/hiermenuhelp/). Anyway, I would like to know if it is possible to do this out of the box or if I need to modify their code. If modification is the case, are there any docs that discuss this? Any advice/articles on modifing the menu in plumtree would be appreciated .

    You can develop your own menu and replace the default menu.
    Menu is just a property at the Form level.

  • Pourquoi, quand je modifie un des menu existant dans la Bibliothèque de Widget, et que je le sauvegarde dans Ma Bibliothèque sous Mes éléments, il prends pas en compte les modification des sous menus??

    Bonjour,
    Il y a une petite chose que je ne comprends pas dans Adobe MUSE CC.
    Quand je prends un des menu de la bibliothèque des Widgets, (le menu horizontal), et que je le modifie dans tous les sens (Menu complet avec les sous menus + les polices, couleurs et contours + les différents état "actif-normal-survol-visité"), et qu'une fois terminé la modification de mon Widget, je décide de le sauvegarder pour la prochaine fois, (comme ça je n'ai pas
    à tous recommencer).
    Il se sauvegarde bien dans ma Bibliothèque sous Mes éléments, mais par contre, quand je reprends mon menu modifié pour un nouveau site ou une nouvelle page, les modifications
    ont bien étés sauvegardées, mais pas dans les sous menu du Widget??
    Donc a chaque fois, je dois remodifier le sous menu du Menu Horizontal de la bibliothèque des Widgets.
    Es normal, ou bien y-a-t-il une solution? Ou es un bug, ou un oubli à la conception de Muse?
    Merci beaucoup pour vos futur réponses.
    Je vous prie de recevoir mes salutations les meilleurs.
    Stephane.

    While you are free to do what you want - it is strongly recommended that you do not use a referenced library (Do Not uncheck the preference to "copy imported items to the iPhoto lbrary")  If creates problems, saves no space and sets up for futrue nighemares
    You final conclusion is the correct one - FOR YOU - if you want destructive editing rather than the lossless editing that iPhoto provides then simply do not use iPhoto
    LN

  • Change in table maintenance generator

    Hi All,
    I have created one table. While creating data through table maintenace, if for values of nonkey fields are same then it should give some error?
    How to achieve this functionality?
    Regards,
    Jeetu

    For Performing validations for the table entries,
    You can do the same in the events of table maintenance generrator...
    Go to table maintenence screen->
    On Menu->Modifications->Events-> Create a new event(05-For new entry)...and add the validation to be performed and check entries..
    You have many events for before save.on save, after save etc..
    Regards
    Shiva

  • Version compare during SPDD

    Hello, We are in the process of carrying upgrade. I am using SPDD. I see some yellow lights for table indexes. For most of the table indexes, when i do the version compare i see that almost 99% of the old version are identical to the current version and need no changes to the new version. Am i doing the version comparison correctly? Do i need to create a Transport (TR) even if the versions are identical? Thanks

    Hi Ricky,
    It's this function and the literature says it's a valid choice during SPDD phase:
    Yes, the object should get added to SPDD TR and should disappear from SPDD after refresh.
    However, after reading the follwing helptext to Message no. 0M400 (I do think it applies only to using SE95 to reset, not the SPDD):
    "In the Modification Browser (Transaction se95), you can reset modified objects to the original.
    Caution: In the SPDD phase, you should never use SE95 to reset objects because activation is required for this. Instead, modify the object - for example, using SE11 - so that it is identical with the original object. For this purpose, use the compare option in Version Management."
    you also could choose to play safe, accept the "nonexistant" Modification, and reset to original in SE95 only after you are through with SPDD and DDIC Activation and have released the SPDD TR. You'll record the resets to original in another TR then.
    Reset to original is also possible only if you do have the original in the system; use menu Modifications->Display Original to verify that.
    cheers
    Janis

  • ESS Configuration for Homepage Framework

    I am an experienced web developer but new to SAP web Technologies and any info is much appreciated...
    I now have an understanding how the SAP IMG configuration affects the SAP Portal ESS interface but  ultimately what tells the ESS Portal to use the appropriate entry in the SAP IMG config
    My objective is to setup the ESS portal to use a complete new set of config entries.  Is there an easy way to do this?
    For example in the Define Area Group page, what tells the portal to use "SAPDEFAULTESS_ERP2005" and not my entry "MyEntrySAPDEFAULTESS_ERP2005".
    SAPDEFAULTESS
    SAPDEFAULTESS_ERP2005
    MyEntrySAPDEFAULTESS_ERP2005
    Thank you,
    James Pina

    The Iviews within the Portal ESS role tell the system what menus to use. The intial Overview iview has parameters for the Header and Area Key which come standard pointing to the standard SAP Config entries. Also, each subarea has an Iview in the Portal that points to the Header, AreaGroup and Area key which also point to the standard SAP config entries.
    To create your own menus, you will need to change the config in the IMG and then change the parameters within the Portal Iviews to point to your new config.
    This link will explain in detail.
    [XSS Menu Modification|http://help.sap.com/erp2005_ehp_04/helpdata/EN/c2/d343c938ae419197aa23e637f4fe0b/frameset.htm]
    Cheers,
    Mike

  • Disable timezone adjusting

    Hey I guys,
    I have switched from iPhoto to Aperture recently and I am quite happy so far, but there is one thing right now that is bugging me like crazy: Picture time, timezones and all those inconsistencies.
    I cannot wrap my head around it, I can't even tell what's wrong exactly, because it is so inconsistent.
    Basically, I travel a lot and I want to browse all my pictures and see at what time they were taken in their timezone. If I was in New Zealand and took a picture at 8pm on the 1. of Jan 2012, I want to see it with that date and time even though I am in Sydney right now. I do not want it to adjust or in fact do ANYTHING. I don't even care abou the timezone, I just want to know when and at what time I took a picture.
    So far I thought this is what Aperture has been doing, but there are inconsistencies everywhere. For example, if I hover over a project it displays the oldest picture is 01.01.2012, but then if I view the oldest picture in the project the metadata shows the date as 02.01.2012.
    It gets even worse if there are multiple cameras, which were taking pictures at the same time, but had incorrect times set. On my holiday in NZ friends of mine were taking pictures and their time was set to Canada time and mine was set to NZ time. I thought that would be no problem, but EVERYTHING is completely messed up. I tried to use adjust time and date, but it displays a different date than what the metadata shows. Reloading from master again sets a different time. Changing the timezone through the batch change menu modifies all of those again. It's a complete mess and there is NO documentation on it. At least I couldn't find any.
    How could Apple make something so complicated? To be honest after 1h of experimenting and googling and reading all the posts about this, I am sick of it. All I want is for Aperture to stop doing anything with the times. Just display the same times as they are in the pictures... this can't be that hard, can it?
    I hope someone can either tell me how to turn this nonsense off or explain how Aperture deals with time and timezones so that I can at least work around it.
    I would really appreciate any help I can get with this... I am so frustrated...
    Greetings, Kim

    Hi,
    thank you very much! Your post helped me a lot to understand what Aperture is doing. After playing around and experimenting here is what I found additionally:
    "Adjust date/Time..." displays the time adjusted to your current time zone:
    If the picture was taken in NZ and the timezone is set to NZ's timezone and I am currently in Sydney and my system preferences time is set to Sydney's timezone. Aperture will display the adjusted time.
    Picture time: 02.02.2010 03:28:35 PM NZDT
    Date shown when adjusting under original: 02.02.2010 01:28:35 PM AEDT (The time it was in Sydney (my current timezone) when the picture was shot)
    After adjusting the time Aperture for some reason also changes the timezone setting. In my case for some reason to GMT+0, but actually does write the correct time into the master (the one you selected) "Update from Master"
    I think this is where all my confusion came from yesterday.
    I like to adjust the actual time and write it directly into the master, in case I am ever going to switch to a different program or I ever want to view the pictures in a different program. I just want to have such essential metadata properly and correctly in the file itself and not in a database of an app.
    Unfortunately the batch change adjust timezone function does not change the master file.
    The problem is that if you use "Reload from Master" the timezone adjustment is overwritten with the current system time. I do this for example after geotagging my pictures with other programs. This is one more reason for me to adjust the time with the "Adjust date/time..." option.
    To solve my problem I will from now on do the following:
    Reload from master to get the actual time from the master and avoid confusion in case Aperture adjusted anything
    Use "batch change" to set the timezone of the picture to my current timezone (both actual and camera's being the same, so it shouldn't change the time at all)
    Use "Adjust date/time..." to adjust the time (which should display the same original time that was also in the master itself, since the picture is set to my current timezone).
    Again "Reload from master", because adjust time will probably adjust the timezone for some stupid reason again
    Use "Batch change" to set the timezone to the real timezone the picture was shot in (both actual and camera's being the same to avoid any changing of the time itself)
    Overall I still can't believe how complicated and confusing this is and that it takes so many steps to do this.
    I cannot believe the software does such random things... just WHY would it change the timezone if I am adjusting the time and WHY does it display the time converted to my current timezone when adjusting it... things just don't make sense to me.
    PS: My camera is a Sony Nex-5, but the same thing happened with my friend's Fujifilm camera. All the pictures I am currently working with were imported from my iPhoto library and were set to the timezone GMT+0, but at least the time hasnt been shifted or anything as far as I can tell.

  • How can I make invisible the menu "window" on oracle webforms

    anybody can tell me how can I make invisible menu "window" that appears on webforms?
    Thanks in advanced.

    Hi Andrew,
    Thank you for looking at my problem!
    Both my development system and test system are Window XP. The font size are all set to Normal. What other details do you need to know?
    The text on front panel shows well on my development machine. But when the .exe runs on my test machine, the text size was not adjusted by itself so the text body got cut off.
    I found a way to "fix" this problem: I had to drag the text box down and right so there is enough magin between the text body and the box on the right and at the bottom. I had to try it a few times until it finally shows well on my test machine. However, with those magins, it doesn't look nice on my development machine anymore. Also, I only tried on one test machine, if it looks good on one test machine, will it look good on all the other machines? Eventually my app is going to run on Window 7. I'll have to test that out and find out if it's still going to be a problem. Anyway, I don't feel this is the right way to do it. I hope someone knows what I'm talking about and have a soluction to it.
    Thanks very much!

  • Java Swing frame for modification Excel file or Word file with All menu...

    Hello All,
    Can Any one help me for making java Swing frame for modification Excel Data or word file with all Menu.. Plz send me java Code for that.. I am bit new in Swing.
    i am waiting for ur help..
    Thanks
    Samir

    hi pbrockway2 ,
    Can you go through this program Sir, i am trying to call Excel content below of menu. when i will press Edit button then excel content should come below with Cut, copy, paste , Save Button..
    Plz help me sir...
    import javax.swing.*;
    import java.io.*;
    import java.awt.event.*;
    public class TestReader
    private static void createAndShowUI()
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame=new JFrame("Test Reader");
    JButton button=new JButton("Edit");
    button.addActionListener(new ButtonListener());
    frame.getContentPane().add(button);
    frame.setVisible(true);
    frame.pack();
    static class ButtonListener implements ActionListener
    public void actionPerformed(ActionEvent event)
    openTheFile();
    private static void openTheFile()
    try
    String commands[]=new String[3];
    commands[0]="cmd.exe";
    commands[1]="/C";
    commands[2]="INSTALL.LOG"; // here file name is supposed to be in the working dir
    Runtime rt=Runtime.getRuntime();
    Process proc=rt.exec(commands);
    StreamGobbler errorGobbler=new StreamGobbler(proc.getErrorStream(),"ERROR");
    StreamGobbler outputGobbler=new StreamGobbler(proc.getInputStream(),"OUTPUT");
    errorGobbler.start();
    outputGobbler.start();
    catch (Exception e){}
    public static void main(String args[])
    SwingUtilities.invokeLater(new Runnable()
         public void run()
         createAndShowUI();
    static class StreamGobbler extends Thread
    InputStream is;
    String type,root;
    StreamGobbler(InputStream is,String type)
    this.is=is;
    this.type=type;
    public void run()
    try
    InputStreamReader isr=new InputStreamReader(is);
         BufferedReader breader=new BufferedReader(isr);
         String line=null;
         while ((line=breader.readLine())!=null)
         System.out.println(type+">"+line);
    catch (Exception e)
         System.out.println(e);
    Thanks
    SamiR

  • Modification of menu items HTML

    Does somebody know, how to modify menu item rendering in oracle UCM 11g?
    In previous version, 10g, I used to make in using menuA_MenuItem_OpeningHtml(node, nodeLocation), menuA_MenuItem_CoreHtml(node, nodeLocation), menuA_MenuItem_ClosingHtml(node, nodeLocation) javascript methods in my custom layout.js template, but in the 11th version those methods are not fired. Menu items itself are rendered as DIV wish UL element in it, I would like to have another HTML markup there. Is it any option to do than in a simple way?

    Hello, Jiri, the tutorial you've sent makes 100% clear how to add items into menuA or MenuB, but it still does not explain, hot to change menu item rendering. Yahoo  interface library generates UL/LI elements for the main menu, but in case I would like to have a table instead of LIs, what modifications need to be done, that's a question. But may be I just cannot read. Will go through the example one more time.

  • Doubt on Modifications in the Menu painter

    Hi Experts,
    I am trying to add a sub-object to the EDIT button in the Menu Bar of the VA01 transaction.
    I am able to add the new function code to the SAPMV45A program’s menu bar and register the f-codes using t code VFBS.
    But when i am trying to implement same thing in the SAPMV45B program’s menu bar, it is asking for access key.
    Can some please help me ,is there any other way to solve the issue.I am new to this topic .
    Thanks,
    Naga Lakshmi.

    Not understood fully...
    But check whether access key is already applied to SAPMV45A program.
    (Check table 'ADIRACCESS' with key R3TR PROG SAPMV45A, if entry exists then access key is applied).
    if this is not what your are looking for please explain in detail what you are trying to do.

  • Weblogic/forms 11g servlet and webforms app menu error

    Help!
    I have OWLS 11gR1 (10.3.3) and FWM, FormsReports (11.1.1.3) installed on Windows 2008-64bit.
    I also have OWLS 11gR1 (10.3.3) and FWM, FormsReports (11.1.1.3) installed on Windows XP (32-bit).
    I've compiled my app in each environment, respectively, and I'm getting different results: FRM-41068 on 64bit; No errors on 32bit.
    Here's the scenario:
    I have a custom menu with parent and menu items built from the database (cursor fetches in menu start up code and placed using set_menu_item_property built-in). Based on the user's privs, the menu is built dynamically.
    After I log into my 64bit version, I immediately get error "FRM-41068: Error in Set_Menu_Item_Property."
    Once I "OK" my way through the messages, my form is displayed with the attached menu, however, my menu placeholders display "<New Item>", as though the cursors failed on the fetch to the database and did not return my menu item names. If I click on one of the "<New Item>" menu items, I again "OK" my way through the messages... just as mentioned above.
    I don't have this problem in my 32bit XP environment (This also was not an issue with 10g AS (10.1.2.3, 32bit)).
    Also, to add, when I turn on session tracing for the session getting the FRM-41068, the errors go away, the forms and menus load correctly.
    Is there a Weblogic setting I'm missing somewhere (forms/ohs1/webcache)?
    [Forms 11g - Windows 2008 64bit - FRM-41068 - Menu Issues]
    Thanks for your help!

    Why wouldn't you post in the proper forum, i.e the Forms forum

  • Modification in the Menu SYSTEM

    Hello Gurus,
    I am working on once standard Tcode SCAL.
    this is for Calendar. When I display the calendar, Save option which is there in the Menu System-List-Save. is Not active.
    I want to activate that option so that user can save the Calender in one of the 3 options Proivded there.
    Can anybody tell me How can I do this. it is not getting reflected in the GUI status for the PRogram as this is Standard one and coming bydefault in every screen in SAP.
    Thanks in Advance.
    Vinod

    Hi,
    Through this user exit(CONFPP07  - define detail areas for single screen entry) you can bring any customer specific screens(any additional tabs created and being used in CO11), in the single entry screen of confirmation(CO11N).
    Please coordinate with your Technical consultant for further details.
    Regards,
    Krishna Mohan

  • Menu toolbar en Web Forms

    Hi to everybody:
    Im doing a deployment of a application client/server to Web forms and when I run the application in Web the toolbar desappear. Is this normal ? is a restriction for WebForms ?
    Does any document exist with the restrictions of Forms running in Client/server vs Web ??
    Thank you in advance

    GO TO THE PROPERTY PALLET FOR THE MODULE YOU'RE WORKING IN
    YOU'LL SEE SOMETHING THAT SAYS MENU MODULE, IT WILL SAY DEFAULT&SMARTBAR
    YOU CAN DELETE ONE OR THE OTHER OR BOTH DEPENDING ON WHAT YOU WANT TO SEE

  • 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.

Maybe you are looking for

  • Songs not playing, few second import

    hey guys! wandered if someone could help me? I tried importing songs from a cd (original, just brought) and when i try and import it, only a few seconds of the song gets imported to my library? If I try and drag the songs to my ipod in itunes a messa

  • PreparedStatement and table name

    Hi, I have the following snippet, and it seems that I cannot use the function prepStmt.setString(1, TABLE_NAME); to set the table name for the SQL prepared statement. What function should I use? Thanks, Rocky final String[] TABLE_NAME = "Borrower", "

  • Configuration to setup approval for vendor changes and creation

    Can anyone help to know where to switch on the approval for vendor changes and creation?

  • Function module L_INV_COUNT_EXT

    Hi, We are calling the above FM L_INV_COUNT_EXT using a remote function call. However, the count remains locked on ELLINKE for quite some time after we finished processing the FM. When we run this function in SAP using SE37 we notice that the lock on

  • Edit in adobe pro

    is there a way to edit a lifecycle form in adobe pro 9?  I would like to edit a form that was created or saved in lyfecycle and open it and edit it in adobe pro9?